Changeset 88566 in spip-zone


Ignore:
Timestamp:
Apr 11, 2015, 7:41:45 AM (4 years ago)
Author:
cedric@…
Message:

Le fichier vides.txt peut etre tres gros et est un peu lourd a manipuler. On le remplace par un fichier unitaire .vide sur chaque gravatar concerne, ce qui permet un touch unitaire avant une recuperation pour eviter une double recuperation concurrente (idem sur le cache, on touch avant de recuperer pour eviter une double recuperation)

Location:
_plugins_/gravatar
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/gravatar/gravatar_fonctions.php

    r88565 r88566  
    195195        $gravatar_id .= ($gravatar_default=='404'?"":"-$gravatar_default");
    196196        $gravatar_cache = $tmp.$gravatar_id.'.jpg';
     197        $gravatar_vide = $tmp.$gravatar_id.'.vide';
    197198
    198199        $gravatar = "";
     
    214215
    215216        // si on a un cache valide, on l'utilise
    216         $vides = false;
    217217        if ($gravatar==$gravatar_cache){
    218218                $duree = $_SERVER['REQUEST_TIME']-filemtime($gravatar_cache);
     
    221221                }
    222222                spip_log("Actualiser gravatar existant $email anciennete $duree s (cache maxi " . _GRAVATAR_CACHE_DELAY_REFRESH . "s)", "gravatar");
     223                @touch($gravatar_cache); // un touch pour eviter une autre mise a jour concurrente
    223224        }
    224225        // si c'est un email sans gravatar connu (deja verifie), on ne reverifie pas que passe un delai suffisant
    225226        else {
     227                // si un fichier vides.txt existe encore, le transformer en touch unitaires
    226228                lire_fichier($tmp . 'vides.txt', $vides);
    227                 $vides = @unserialize($vides);
    228                 if ($vides===false) $vides = array();
    229                 if (isset($vides[$gravatar_id])){
    230                         $duree_vide = $_SERVER['REQUEST_TIME']-$vides[$gravatar_id];
     229                if ($vides AND $vides = @unserialize($vides)){
     230                        foreach($vides as $id=>$t){
     231                                @touch($tmp.$id.".vide",$t);
     232                        }
     233                        @unlink($tmp . 'vides.txt');
     234                }
     235
     236                if (file_exists($gravatar_vide)){
     237                        $duree_vide = $_SERVER['REQUEST_TIME']-filemtime($gravatar_vide);
    231238                        if ($duree_vide<_GRAVATAR_CACHE_DELAY_CHECK_NEW OR $nb--<=0){
    232239                                return $gravatar;
     
    237244                          OR (isset($GLOBALS['visiteur_session']['session_email']) AND $GLOBALS['visiteur_session']['session_email']===$email) ){
    238245                                spip_log("Actualiser gravatar vide $email $duree_vide s (cache maxi " . _GRAVATAR_CACHE_DELAY_CHECK_NEW . "s)", "gravatar");
     246                                @touch($gravatar_vide); // un touch pour eviter une autre mise a jour concurrente
    239247                        }
    240248                        else {
     
    288296                        }
    289297                }
    290                 if (is_array($vides) AND isset($vides[$gravatar_id])){
    291                         unset($vides[$gravatar_id]);
    292                         ecrire_fichier($tmp . 'vides.txt', serialize($vides));
     298                else {
     299                        if (file_exists($gravatar_cache . '.png')){
     300                                @unlink($gravatar_cache . '.png');
     301                        }
     302                }
     303                if (file_exists($gravatar_vide)){
     304                        @unlink($gravatar_vide);
    293305                }
    294306
     
    313325                }
    314326                else {
    315                         $vides[$gravatar_id] = time();
    316                         ecrire_fichier($tmp . 'vides.txt', serialize($vides));
     327                        @touch($gravatar_vide);
    317328                }
    318329        }
  • _plugins_/gravatar/paquet.xml

    r88563 r88566  
    22        prefix="gravatar"
    33        categorie="communication"
    4         version="1.6.1"
     4        version="1.6.2"
    55        etat="stable"
    66        compatibilite="[2.0.0;3.1.*]"
  • _plugins_/gravatar/plugin.xml

    r88563 r88566  
    33        <auteur>Thomas Beaumanoir, [Clever Age->http://www.clever-age.com], Fil et Cedric</auteur>
    44        <icon>images/gravatar-64.png</icon>
    5         <version>1.6.1</version>
     5        <version>1.6.2</version>
    66        <etat>stable</etat>
    77        <slogan>
Note: See TracChangeset for help on using the changeset viewer.