From f545c318cd8bae5ec13f7cba7219a4747a60ef81 Mon Sep 17 00:00:00 2001 From: Fil <fil@rezo.net> Date: Thu, 25 Nov 2004 23:59:22 +0000 Subject: [PATCH] =?UTF-8?q?suppression=20du=20mecanisme=20de=20fichier=20.?= =?UTF-8?q?NEW=20;=20les=20invalideurs=20de=20taille=20et=20dur=C3=A9e=20s?= =?UTF-8?q?uffisent=20=C3=A0=20maintenir=20le=20CACHE=20=C3=A0=20une=20tai?= =?UTF-8?q?lle=20raisonnable=20m=C3=AAme=20face=20=C3=A0=20des=20robots=20?= =?UTF-8?q?fous?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- inc-cache.php3 | 3 --- inc-public-global.php3 | 39 ++++++++------------------------------- 2 files changed, 8 insertions(+), 34 deletions(-) diff --git a/inc-cache.php3 b/inc-cache.php3 index 89aee591ae..85c917926a 100644 --- a/inc-cache.php3 +++ b/inc-cache.php3 @@ -75,14 +75,11 @@ function generer_nom_fichier_cache($contexte='', $fond='') { // Securite : est sur que c'est un cache function retire_cache($cache) { if ($GLOBALS['flag_ecrire']) return; -# spip_log("kill $cache ?"); if (preg_match('|^' . _DIR_CACHE . "([0-9a-f]/)?([0-9]+/)?[^.][\-_\%0-9a-z]+\.[0-9a-f]+(\.gz)?$|i", $cache)) { // supprimer le fichier (de facon propre) supprimer_fichier($cache); - // et le fichier compagnon s'il existe - @unlink($cache.'.NEW'); } else spip_log("Impossible de retirer $cache"); } diff --git a/inc-public-global.php3 b/inc-public-global.php3 index 13f221a3d5..bdd08c7805 100644 --- a/inc-public-global.php3 +++ b/inc-public-global.php3 @@ -19,8 +19,8 @@ function obtenir_page ($contexte, $chemin_cache, $delais, $use_cache, $fond, $in spip_timer('calculer_page'); $page = calculer_page($chemin_cache, - array('fond' => $fond, - 'contexte' => $contexte), + array('fond' => $fond, + 'contexte' => $contexte), $delais, $inclusion); @@ -32,49 +32,26 @@ function obtenir_page ($contexte, $chemin_cache, $delais, $use_cache, $fond, $in spip_log (($inclusion ? 'calcul inclus':'calcul').' (' .spip_timer('calculer_page')."): $log"); - // on vient d'ecrire le cache : creer un .NEW fantome qui indique - // qu'il faut changer d'invalideur a la prochaine lecture et donner - // un invalideur 't' dans 1 heure - // NB: cet invalideur connait aussi la taille du fichier + // Nouveau cache : creer un invalideur 't' fixant la date + // d'expiration et la taille du fichier if (@file_exists($chemin_cache)) { - - $bedtime = time() + 3600; + // Ici on ajoute 3600s pour eviter toute concurrence + // entre un invalideur et un appel public de page + $bedtime = time() + $delais + 3600; $taille = @filesize($chemin_cache); $fichier = addslashes($chemin_cache); spip_query("INSERT IGNORE INTO spip_caches (fichier,id,type,taille) VALUES ('$fichier','$bedtime','t','$taille')"); - @touch($chemin_cache.'.NEW'); } } else { - // Le fichier compagnon NEW existe => ce cache est utilise - // pour la premiere fois : on change alors d'invalideur 't' - // pour le rendre plus perenne - if (@file_exists($chemin_cache.'.NEW')) { - spip_log ("premier acces: $chemin_cache (.NEW)"); - // Attention ne pas mettre time()+$delais mais quelque chose - // de plus grand, sinon il y a risque de concurrence entre - // l'invalideur et un appel public de page ; plus on en ajoute - // et plus le cache est gros, mais plus il procure de resistance - // aux pannes, car le cache contiendra les pages calculees - // il y a moins de $conservation secondes. - // L'invalideur initial avait pour date time()+3600 : cf. - $conservation = 3600 * 12; // intval(sqrt(3600*12*$delais)) ? - $bedtime = time() + $delais + $conservation; - $fichier = addslashes($chemin_cache); - spip_query("UPDATE spip_caches SET id='$bedtime' - WHERE fichier='$chemin_cache' AND type='t'"); - if ($GLOBALS['db_ok']) - @unlink($chemin_cache.'.NEW'); - } - // // Lire le fichier cache // lire_fichier ($chemin_cache, $page['texte']); $lastmodified = max($lastmodified, @filemtime($chemin_cache)); - # spip_log ("cache $chemin_cache $lasmodified"); + # spip_log ("cache $chemin_cache $lastmodified"); // // Lire sa carte d'identite & fixer le contexte global -- GitLab