Skip to content
Extraits de code Groupes Projets
Valider 61b91226 rédigé par cerdic's avatar cerdic
Parcourir les fichiers

touch peut echouer, il faut se rabattre sur une solution fiable dans ce cas,...

touch peut echouer, il faut se rabattre sur une solution fiable dans ce cas, qui consiste a ecrire le touch dans le fichier meta_cache lui meme.
Resoud la mise a jour infinie a l'upgrade
parent 2542039e
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -26,6 +26,8 @@ function inc_meta_dist()
# AND (@filemtime(_FILE_META) > @filemtime(_DIR_RESTREINT . '.svn/entries'))
AND lire_fichier(_FILE_META, $meta))
$GLOBALS['meta'] = @unserialize($meta);
if (isset($GLOBALS['meta']['touch']) && ($GLOBALS['meta']['touch']<time()-_META_CACHE_TIME))
unset($GLOBALS['meta']);
// sinon lire en base
if (!$GLOBALS['meta']) $new = !lire_metas();
// renouveller l'alea au besoin
......@@ -62,6 +64,10 @@ function lire_metas() {
}
return $GLOBALS['meta'];
}
function touch_meta($antidate){
if (!@touch(_FILE_META, $antidate))
ecrire_fichier(_FILE_META, serialize(array_merge(array('touch'=>$antidate),$GLOBALS['meta'])));
}
// http://doc.spip.org/@effacer_meta
function effacer_meta($nom) {
......@@ -71,9 +77,9 @@ function effacer_meta($nom) {
// et utiliser une statique pour eviter des acces disques a repetition
static $touch = true;
$antidate = time() - (_META_CACHE_TIME<<4);
if ($touch) {@touch(_FILE_META, $antidate);}
if ($touch) {touch_meta($antidate);}
sql_delete("spip_meta", "nom='$nom'");
if ($touch) {@touch(_FILE_META, $antidate); $touch = false;}
if ($touch) {touch_meta($antidate); $touch = false;}
}
// http://doc.spip.org/@ecrire_meta
......@@ -91,7 +97,7 @@ function ecrire_meta($nom, $valeur, $importable = NULL) {
if ($res AND $valeur == $res['valeur']) return;
// cf effacer pour le double touch
$antidate = time() - (_META_CACHE_TIME<<1);
if ($touch) {@touch(_FILE_META, $antidate);}
if ($touch) {touch_meta($antidate);}
if ($res) {
$r = ($importable === NULL) ? ''
: (", impt=" . sql_quote($importable));
......@@ -101,6 +107,6 @@ function ecrire_meta($nom, $valeur, $importable = NULL) {
if ($importable) $r['impt'] = $importable;
sql_insertq('spip_meta', $r);
}
if ($touch) {@touch(_FILE_META, $antidate); $touch = false;}
if ($touch) {touch_meta($antidate); $touch = false;}
}
?>
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter