Changeset 56774 in spip-zone


Ignore:
Timestamp:
Jan 8, 2012, 3:12:16 PM (8 years ago)
Author:
marcimat@…
Message:

Un peu de cache sur les donnees sorties de pmb pour les boucles (1 heure par defaut, mais modifiable avec {datacache X} )

Location:
_plugins_/spip-pmb/trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/spip-pmb/trunk/contenu/page-notice_display.html

    r56670 r56774  
    11[(#REM) Fil d'Ariane ]
    2 <p id="hierarchie"><a href="#URL_SITE_SPIP/"><:accueil_site:></a> &gt; <a href="#URL_PAGE{catalogue}"><:pmb:catalogue:></a> &gt; <strong class="on">[(#ENV{notice/titre}|couper{80})]</strong></p>
     2<BOUCLE_notice(PMB:NOTICES){id}>
     3<p id="hierarchie"><a href="#URL_SITE_SPIP/"><:accueil_site:></a>
     4        &gt; <a href="#URL_PAGE{catalogue}"><:pmb:catalogue:></a>
     5        &gt; <strong class="on">[(#TITRE|couper{80})]</strong></p>
    36
    47<div class="cartouche">
    5         [(#ENV{notice/logo_src}|oui)
    6                 [(#ENV{notice/logo_src}
     8        [(#VALEUR{logo_src}|oui)
     9                [(#VALEUR{logo_src}
    710                        |image_reduire{200,0}
    811                        |inserer_attribut{class,spip_logos})]
    912        ]
    10         <h1 class="h1">[(#ENV{notice/titre})]</h1>
    11         [<p class="soustitre">(#ENV{notice/soustitre})</p>]
     13        <h1 class="h1">#TITRE</h1>
     14        [<p class="soustitre">(#SOUSTITRE)</p>]
    1215</div>
    1316
    14 <INCLURE{fond=inclure/inc-notice_display}{env}{afficher_logo=non}{afficher_resume=oui}>
     17<INCLURE{fond=inclure/inc-notice_display}{env}
     18        {notice=#VALEUR}{afficher_logo=non}{afficher_resume=oui}>
    1519
     20</BOUCLE_notice>
  • _plugins_/spip-pmb/trunk/notice_display.html

    r55941 r56774  
    1 [(#SET{notice, [(#ENV{id}|pmb_notice_extraire)]})
    2 ]<INCLURE{fond=structure}{env}{type=page}{composition=notice_display}{notice=#GET{notice}} />
     1<INCLURE{fond=structure}{env}{type=page}{composition=notice_display} />
  • _plugins_/spip-pmb/trunk/paquet.xml

    r56759 r56774  
    22        prefix="pmb"
    33        categorie="divers"
    4         version="1.105.0"
     4        version="1.106.0"
    55        etat="dev"
    66        compatibilite="[3.0.0-beta2;3.0.*]"
  • _plugins_/spip-pmb/trunk/public/pmb.php

    r56772 r56774  
    9595                }
    9696
    97 
    98                 $select = charger_fonction($this->type . '_select', 'inc', true);
    99                 $this->tableau = $select($this->command);
     97                // demande sortie du cache ou recalculee
     98                $cle = $this->creer_cle_cache();
     99                if ($cache = $this->use_cache($cle)) {
     100                        $this->tableau = $cache;
     101                } else {
     102                        $select = charger_fonction($this->type . '_select', 'inc', true);
     103                        $this->tableau = $select($this->command);
     104
     105                        // cache d'une heure par defaut.
     106                        $ttl = isset($this->command['datacache']) ? $this->command['datacache'] : 3600;
     107                       
     108                        if (is_array($this->tableau) AND $ttl>0) {
     109                                $this->cache_set($cle, $ttl);
     110                        }
     111                }
     112
    100113
    101114                // Si a ce stade on n'a pas de table, il y a un bug
     
    118131                $this->rewind();
    119132                #var_dump($this->tableau);
     133        }
     134
     135
     136        /**
     137         * Retourne les donnees en caches
     138         * pour la boucle demandees
     139         * si elles existent et ne sont
     140         * pas perimees
     141         *
     142        **/
     143        protected function use_cache($cle) {
     144
     145                $cache = $this->cache_get($cle);
     146
     147                // Time to live
     148                if (isset($this->command['datacache'])) {
     149                        $ttl = intval($this->command['datacache']);
     150                }
     151               
     152                if ($cache AND ($cache['time'] + (isset($ttl) ? $ttl : $cache['ttl']) > time())
     153                AND !(_request('var_mode') === 'recalcul' AND include_spip('inc/autoriser') AND autoriser('recalcul'))) {
     154                        return $cache['data'];
     155                }
     156
     157                return false;
     158        }
     159
     160
     161        /**
     162         * Cree une cle unique
     163         * pour sauvegarder une analyse de donnees
     164         * basee sur les criteres de boucle demandes
     165         *
     166        **/
     167        protected function creer_cle_cache() {
     168                $cle = $this->command;
     169                $cle['from'][0] = $this->type;
     170                unset($cle['id']); // pas le nom de la boucle
     171                $cle = md5(serialize($cle));
     172                return $cle;
    120173        }
    121174}
     
    137190
    138191/**
     192 * Modifier la duree du cache des boucles PMB
     193 * par defaut a 1 heure (si memoization actif)
     194 * {datacache 3600}
     195 *
     196 * @param string $idb
     197 * @param object $boucles
     198 * @param object $crit
     199 */
     200function critere_PMB_datacache_dist($idb, &$boucles, $crit) {
     201        return critere_DATA_datacache_dist($idb, $boucles, $crit);
     202}
     203
     204
     205/**
    139206 * Selectionner les notices demandees
    140207 * et retourner un tableau des elements parsees
Note: See TracChangeset for help on using the changeset viewer.