Changeset 111890 in spip-zone


Ignore:
Timestamp:
Oct 6, 2018, 10:07:22 PM (14 months ago)
Author:
jluc@…
Message:

constantes CACHELAB_CLEAN et CACHELAB_CHRONO... Par défaut, cacheLab ramasse les déchets et libère le cache APC

Location:
_plugins_/cachelab/trunk
Files:
2 added
2 edited

Legend:

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

    r111839 r111890  
    1313}
    1414
    15 function cachelab_applique ($action, $cle, $arg=null, $options='') {
     15function cachelab_applique ($action, $cle, $data=null, $options='') {
    1616global $Memoization;
    1717static $len_prefix;
     
    2323        case 'del' :
    2424                $del = $Memoization->del($joliecle);
    25                 if (!$del)
     25                if (!$del) {
    2626                        spip_log ("Échec 'del' $joliecle", 'cachelab');
    27                 break;
    28 
    29         case 'mark' :
    30                 if ($arg === null)
     27                        return false;
     28                };
     29                break;
     30
     31        case 'echo_cache' :
     32                if (!$data)
    3133                        $data = $Memoization->get($joliecle);
    32                 else
    33                         $data = $arg;
    34                 if (is_array($data)) {
    35                         $data['cachelab_mark'] = (isset($options['mark']) ? $options['mark'] : 1);
    36                         $data = $Memoization->set($joliecle, $data);
    37                 }
    38                 else
    39                         spip_log("clé=$joliecle : pour $action avec arg=".print_r($arg,1)." et opt=".print_r($options,1).", data n'est pas un tableau : ".print_r($data, 1), 'cachelab');
    40                 break;
    41 
    42         case 'echo_cache' :
    43                 $data = $Memoization->get($joliecle);
    4434                echo "«<xmp>".substr(print_r($data,1), 0,2000)."</xmp>»";
    4535                break;
    4636
    4737        case 'echo_html' :
    48                 $data = $Memoization->get($joliecle);
     38                if (!$data)
     39                        $data = $Memoization->get($joliecle);
    4940                echo "<p>«<xmp>".print_r($data,1)."</xmp>»</p>";
    5041                break;
     
    5849                break;
    5950        }
     51        return true;
    6052}
    6153
     
    8880
    8981        // options
     82        // explode+strpos par défaut pour les chemins
    9083        $methode_chemin = (isset ($options['methode_chemin']) ? $options['methode_chemin'] : 'strpos');
    91         $do_clean = ($action != 'pass') and (!isset ($options['clean']) or $options['clean']);  // clean par défaut
    92         $do_lists = ($action == 'list') or (isset ($options['list']) and $options['list']);             // pas de listes par défaut
    93         $do_chrono = (isset ($options['chrono']) and $options['chrono']);                                               // pas de chrono par défaut
     84        // clean par défaut
     85        $do_clean = (isset ($options['clean']) ? $options['clean'] : (!defined('CACHELAB_CLEAN') or CACHELAB_CLEAN));
     86        // pas de listes par défaut
     87        $do_lists = ($action == 'list') or (isset ($options['list']) and $options['list']);
     88        // pas de chrono par défaut sauf si CACHELAB_CHRONO
     89        $do_chrono = (isset ($options['chrono']) ? $options['chrono'] : (defined('CACHELAB_CHRONO') and CACHELAB_CHRONO));
    9490        if ($do_chrono) {
    9591                include_spip ('lib/microtime.inc');
    9692                microtime_do ('begin');
    9793        }
    98        
     94
    9995        // retours
    10096        $stats=array();
    101         $stats['nb_alien']=$stats['nb_site']=$stats['nb_clean']=$stats['nb_no_data']=$stats['nb_not_array']=$stats['nb_cible']=0;
     97        $stats['nb_alien']=$stats['nb_candidats']=$stats['nb_clean']=$stats['nb_no_data']=$stats['nb_not_array']=$stats['nb_cible']=0;
    10298        $stats['l_no_data'] = $stats['l_not_array'] = $stats['l_cible'] = array();
    10399
     
    111107
    112108                $cle = $d['info'];
     109                $data=null;
    113110
    114111                // on saute les caches d'autres origines
     
    127124                if ($meta_derniere_modif > $d['creation_time']) {
    128125                        if ($do_clean) {
    129                                 $Memoization->del(substr($cle,$len_prefix));
     126                                $del=$Memoization->del(substr($cle,$len_prefix));
     127                                if (!$del)
     128                                        spip_log ("Echec du clean du cache périmé cle=$cle (création : {$d['creation_time']}, invalidation : $meta_derniere_modif)", "cachelab");
    130129                                $stats['nb_clean']++;
    131130                        };
     
    153152                                continue 2;
    154153                        default :
    155                                 die("Méthode pas prévue pour le filtrage par le chemin");
     154                                die("Méthode '$methode_chemin' pas prévue pour le filtrage par le chemin");
    156155                        };
    157156                }
     
    187186                if ($do_lists)
    188187                        $stats['l_cible'][] = $cle;
    189                 cachelab_applique ($action, $cle, null, $options);
    190         }
     188
     189                cachelab_applique ($action, $cle, $data, $options);
     190        }
     191
    191192
    192193        if ($do_chrono) {
    193194                $stats['chrono'] = microtime_do ('end', 'ms');
    194                 spip_log ("cachelab_filtre ($action, $cle_objet, $id_objet, $chemin, $options) : {$stats['chrono']} ms", 'cachelab');
     195                spip_log ("cachelab_filtre ($action) avec session=$session, objet $cle_objet=$id_objet, chemin=$chemin) : {$stats['nb_cible']} caches ciblés en {$stats['chrono']} ms", 'cachelab');
    195196        }
    196197
  • _plugins_/cachelab/trunk/paquet.xml

    r111837 r111890  
    22        prefix="cachelab"
    33        categorie="outil"
    4         version="0.0.5"
     4        version="0.0.6"
    55        etat="dev"
    66        compatibilite="[3.0.0;3.2.*]"
Note: See TracChangeset for help on using the changeset viewer.