Changeset 112103 in spip-zone


Ignore:
Timestamp:
Oct 21, 2018, 9:37:43 PM (11 months ago)
Author:
jluc@…
Message:

traitement de X-Spip-Methode-Duree-Cache pour calculer dynamiquement la dure d'un cache 2/2

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/cachelab/trunk/inc/invalideur.php

    r112004 r112103  
    196196        list($nombre, $taille) = nombre_de_fichiers_repertoire($dir);
    197197        $total_cache = $taille * $nombre;
    198         spip_log("Taille du CACHE estimee ($l): "
    199                 . (intval(16 * $total_cache / (1024 * 1024 / 10)) / 10) . " Mo", "invalideur");
     198        if ($total_cache)       // Ajout / core car c'est vide avec la memoization
     199                spip_log("Taille du CACHE estimee ($l): "
     200                        . (intval(16 * $total_cache / (1024 * 1024 / 10)) / 10) . " Mo", "invalideur");
    200201
    201202        // Nombre max de fichiers a supprimer
     
    232233}
    233234
    234 
    235235//
    236236// Destruction des fichiers caches invalides
     
    258258##
    259259
     260if  (!defined('LOG_INVALIDATION_CORE'))
     261        define ('LOG_INVALIDATION_CORE', true);
     262
    260263// Supprimer les caches marques "x"
    261264// A priori dans cette version la fonction ne sera pas appelee, car
     
    265268        if (isset($GLOBALS['meta']['invalider_caches'])) {
    266269                effacer_meta('invalider_caches');
     270                if  (LOG_INVALIDATION_CORE)
     271                        spip_log ("retire_caches($chemin = '') ne devrait pas être appelé car ['meta']['invalider_caches'] devrait être false", "invalideur_core_retire_caches_BUG");
    267272        } # concurrence
     273        if  (LOG_INVALIDATION_CORE)
     274                spip_log ("retire_caches($chemin = '')", "invalideur_core_retire_caches");
    268275}
    269276
     
    283290//
    284291// http://code.spip.net/@supprime_invalideurs
    285 function supprime_invalideurs() { }
    286 
    287 
    288 // Calcul des pages : noter dans la base les liens d'invalidation
     292function supprime_invalideurs() {
     293        if  (LOG_INVALIDATION_CORE)
     294                spip_log ("supprime_invalideurs()", "invalideur_core");
     295}
     296
     297// le core indique : "Calcul des pages : noter dans la base les liens d'invalidation"
     298//
     299// Appelé à la fin de creer_cache
     300// $page est le tableau décrivant le cache qui vient d'être calculé
     301// avec les clés suivantes pour ses métadonnées :
     302// squelette,source,process_ins,invalideurs,entetes,duree,texte,notes,contexte,lastmodified,sig
    289303// http://code.spip.net/@maj_invalideurs
    290 function maj_invalideurs($fichier, &$page) { }
    291 
    292 // les invalideurs sont de la forme "objet/id_objet"
     304//
     305// S'il y a une entete X-Spip-Methode-Duree-Cache, on récupère la méthode
     306// et on appelle la fonction cachelab_calcule_duree_cache_lamethode avec le paramètre $page
     307// On corrige alors la durée du cache avec la valeur retournée
     308//
     309function maj_invalideurs($fichier, &$page) {
     310        if  (LOG_INVALIDATION_CORE) {
     311                // Abondamment appelé. À part pour pas noyer les autres
     312                spip_log ("maj_invalideurs($fichier, &page)", "invalideur_core_maj_invalideurs");
     313        }
     314        if (isset($page['entetes']['X-Spip-Methode-Duree-Cache'])) {
     315                global $Memoization;
     316                // FIXME : ici, le texte est toujours dézipé (cf function creer_cache dans memoization),
     317                // alors qu'en cache il peut être zipé.
     318                // Il faut soit reziper le texte au besoin, soit récupérer la version cachée :
     319                // $page = $Memoization->get($fichier);
     320
     321                $f = 'cachelab_calcule_duree_cache_'.$page['entetes']['X-Spip-Methode-Duree-Cache'];
     322                spip_log ("Fonction de calcul trouvée : $f et date_creation={$page['contexte']['date_creation']}", "maj_invalideur_CACHE_dynamique");
     323                if (function_exists($f)) {
     324                        $duree = $f($page);
     325                        $page['duree'] = $duree;
     326                        // On garde un souvenir
     327                        // unset ($page['entetes']['X-Spip-Methode-Duree-Cache']);
     328                        $page['entetes']['X-Spip-Cache']=$duree;
     329
     330                        // Comme memoization, on ajoute une heure histoire de pouvoir tourner
     331                        // sur le cache quand la base de donnees est plantée (à tester)
     332                        $Memoization->set($fichier, $page, 3600+$duree);
     333                }
     334                else
     335                        spip_log ("mais la fonction '$f' n'existe pas\n".print_r($page,1), "maj_invalideur_CACHE_dynamique");
     336        }
     337}
     338
     339// les invalideurs sont en général de la forme "objet/id_objet"
    293340// http://code.spip.net/@insere_invalideur
    294 function insere_invalideur($inval, $fichier) { }
    295 
     341// JAMAIS appelé par le noyau,
     342// ÉTAIT un hook post maj_invalideurs appelé avec $page['invalideurs'] et $fichier
     343function insere_invalideur($inval, $fichier) {
     344        if  (LOG_INVALIDATION_CORE)
     345                spip_log ("insere_invalideur($inval, $fichier)", "invalideur_core");
     346}
    296347
    297348//
     
    299350//
    300351// http://code.spip.net/@applique_invalideur
    301 function applique_invalideur($depart) { }
     352// JAMAIS appelé par le noyau
     353// ÉTAIT un hook post suivre_invalideur avec la liste calculée des fichiers caches à invalider
     354function applique_invalideur($depart) {
     355        if  (LOG_INVALIDATION_CORE)
     356                spip_log ("applique_invalideur($depart)", "invalideur_core");
     357}
Note: See TracChangeset for help on using the changeset viewer.