Browse Source

Faut que ça brille : code + moderne et logs + complets + appliquer l'option "clean" *aussi* sur les caches d'autre chose que des squelettes spip

master
JLuc 2 months ago
parent
commit
0b133eb9c6
  1. 23
      inc/cachelab.php

23
inc/cachelab.php

@ -182,10 +182,10 @@ function cachelab_cibler(string $action, array $conditions = array(), array $opt
// options
// explode+strpos par défaut pour les chemins
$methode_chemin = (isset($options['methode_chemin']) ? $options['methode_chemin'] : 'strpos');
$partie_chemin = (isset($options['partie_chemin']) ? $options['partie_chemin'] : 'tout');
$methode_chemin = ($options['methode_chemin'] ?? 'strpos');
$partie_chemin = ($options['partie_chemin'] ?? 'tout');
// clean par défaut
$do_clean = (isset($options['clean']) ? $options['clean'] : (!defined('CACHELAB_CLEAN') or CACHELAB_CLEAN));
$do_clean = ($options['clean'] ?? (!defined('CACHELAB_CLEAN') or CACHELAB_CLEAN));
// pas de listes par défaut
$do_lists = ($action == 'list') or (isset($options['list']) and $options['list']);
include_spip('lib/microtime.inc');
@ -217,11 +217,6 @@ function cachelab_cibler(string $action, array $conditions = array(), array $opt
continue;
}
// on ne veut examiner que les caches de squelettes SPIP
if (substr($cle, $len_prefix-1, 7) != ':cache:') {
continue;
}
// effacer ou sauter les caches invalidés par une invalidation totale
// ou que apcu ne suit plus
if (
@ -236,20 +231,28 @@ function cachelab_cibler(string $action, array $conditions = array(), array $opt
if ($m_exists = $Memoization->exists($memoiz_cle)) {
$ok_del = $Memoization->del ($memoiz_cle);
}
$trace = "\ncle=>$cle, \napcu_exists=>$a_exists, \nm_exists=>$m_exists,"
$trace = "\ncle=>$cle, \napcu_exists=>$a_exists, \nm_exists=>$m_exists,"
."\nmeta_derniere_modif=>$meta_derniere_modif, \ncreation=>{$d['creation_time']}, \nttl=>{$d['ttl']}, \nnow=>".time();
if ($a_exists and !$ok_del) {
$ok_del = apcu_delete($cle); // bourrin et souvent inutile d'après les logs. Log / est-ce parfois utile ?
if ($ok_del) {
spip_log("apcu_delete bourrin requis. ok_del=$ok_del $trace", 'cachelab_bourrin_UTILE');
spip_log("apcu_delete bourrin requis et réussi. $trace", 'cachelab_bourrin_UTILE');
}
}
if ($ok_del) {
$stats['nb_clean']++;
}
else {
spip_log("clean impossible pour $trace", 'ERREUR_cachelab');
}
}
continue;
}
// à part pour cleaner, on ne cible que les caches de squelettes SPIP
if (substr($cle, $len_prefix-1, 7) != ':cache:') {
continue;
}
// Il reste les caches SPIP véritablement candidats
$stats['nb_candidats']++;

Loading…
Cancel
Save