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