Changeset 111793 in spip-zone


Ignore:
Timestamp:
Sep 30, 2018, 12:19:02 AM (10 months ago)
Author:
root
Message:

Premiers retours d'expérience : le chemin sert désormais à présélectionner les caches candidats à l'invalidation, avant de les tester par le contexte. C'est plus efficace que le OU qu'il y avait avant, car ça limite bcp l'interrogation des contenus des caches (il suffit de tester leur clé)

Location:
_plugins_/cachelab/trunk
Files:
2 edited

Legend:

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

    r111784 r111793  
    7979
    8080        $matche_chemin = $matche_objet = array();
    81         $nb_valides=0;
    82         $nb_echecaccesdata=0;
    83         $nb_absentducontexte=0;
    84         $nb_accesdata=0;
    85         $nb_datanotarray=0;
    86        
     81        $nb_chemins=$nb_valides=$nb_chemin=$nb_echecaccesdata=$nb_absentducontexte=$nb_accesdata=$nb_datanotarray=$nb_applique=0;
     82
    8783        $chemins = explode('|', $chemin);
    8884        $cache = apcu_cache_info();
     
    9490                {
    9591                        $nb_valides++;
    96                         $danslechemin = false;
    97                         switch ($methode_chemin) {
    98                         case 'strpos' :
    99                                 foreach ($chemins as $unchemin) {
    100                                         if ($unchemin and (strpos ($cle, $unchemin) !== false)) {
     92                        $danslechemin = !$chemin;
     93                        if ($chemin) {
     94                                switch ($methode_chemin) {
     95                                case 'strpos' :
     96                                        foreach ($chemins as $unchemin) {
     97                                                if ($unchemin and (strpos ($cle, $unchemin) !== false)) {
     98                                                        if ($avec_listes)
     99                                                                $matche_chemin[]=$d;
     100                                                        $danslechemin = true;
     101                                                        $nb_chemins++;
     102                                                        cachelab_applique ($action, $cle, null, $options);
     103                                                        break;
     104                                                };
     105                                        }
     106                                        break;
     107                                case 'regexp' :
     108                                        if ($chemin and ($danslechemin = preg_match(",$chemin,i", $cle))) {
    101109                                                if ($avec_listes)
    102                                                         $matche_chemin[]=$d;
    103                                                 $danslechemin = true;
     110                                                        $matche_chemin[] = $d;
    104111                                                cachelab_applique ($action, $cle, null, $options);
    105                                                 break;
    106                                         };
    107                                 }
    108                                 break;
    109                         case 'regexp' :
    110                                 if ($chemin and ($danslechemin = preg_match(",$chemin,i", $cle))) {
    111                                         if ($avec_listes)
    112                                                 $matche_chemin[] = $d;
    113                                         cachelab_applique ($action, $cle, null, $options);
    114                                 }
    115                                 break;
    116                         default :
    117                                 die("Pas prévu (todo)");
    118                         };
     112                                        }
     113                                        break;
     114                                default :
     115                                        die("Pas prévu (TODO)");
     116                                };
     117                        }
     118                        else
     119                                $nb_chemins = -1;
    119120
    120                         if (!$danslechemin and $cle_objet and $id_objet) {
     121                        if ($danslechemin and $cle_objet and $id_objet) {
    121122                                global $Memoization;
    122123                                if ($data = $Memoization->get(substr($cle, $len_prefix))) {
     
    129130                                                                if ($avec_listes)
    130131                                                                        $matche_objet[] = $d;
     132                                                                $nb_applique++;
    131133                                                                cachelab_applique ($action, $cle, $data, $options);
    132134                                                        }
     
    147149
    148150        $stats = array(
     151                'ok_chemin'=>$nb_chemins,
    149152                'ok_parsed'=>$nb_valides,
    150153                'fail_data_access' => $nb_echecaccesdata,
    151154                'ok_data_access' => $nb_accesdata,
    152155                'fail_data_not_array' => $nb_datanotarray,
    153                 'ok_data_dont_match' => $nb_absentducontexte
     156                'ok_data_dont_match' => $nb_absentducontexte,
     157                'ok_match'=>$nb_applique
    154158        );
    155159
  • _plugins_/cachelab/trunk/paquet.xml

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