$v) $values[] = "('$fichier', '$type/$k')"; spip_query ("INSERT IGNORE INTO spip_caches (fichier, id) VALUES " . join(", ", $values)); } } // // Invalider les caches lies a telle condition // function suivre_invalideur($cond) { $result = spip_query("SELECT DISTINCT fichier FROM spip_caches WHERE $cond"); $tous = array(); while ($row = spip_fetch_array($result)) $tous[] = $row['fichier']; spip_log("suivre $cond"); applique_invalideur($tous); } // // Supprimer les vieux caches // function retire_vieux_caches() { $condition = "type='t' AND id<".time(); suivre_invalideur($condition); } // // Marquer les fichiers caches invalides comme etant a supprimer // function applique_invalideur($depart) { if ($depart) { $tous = "'".join("', '", $depart)."'"; spip_log("applique $tous"); spip_query("UPDATE spip_caches SET type='x'" . ' WHERE ' . calcul_mysql_in('fichier', $tous)); // Demander a inc-public.php3 de retirer les caches // invalides ; // - le signal (meta='invalider') indique // qu'il faut faire attention ; // - le signal (meta='invalider_caches') indique qu'on // peut effacer 100 caches invalides // (Signaux differents pour eviter de la concurrence entre // les processus d'invalidation) ecrire_meta('invalider', 'oui'); // se verifier soi-meme ecrire_meta('invalider_caches', 'oui'); // supprimer les autres ecrire_metas(); if (_DIR_RESTREINT) { include_local('inc-cache.php3'); retire_caches(); } } } ?>