Changeset 88250 in spip-zone


Ignore:
Timestamp:
Mar 27, 2015, 4:42:43 PM (4 years ago)
Author:
cedric@…
Message:
  • quand un gravatar existe le supprimer de vide.txt
  • si gravatar.com ne repond pas mais qu'un gravatar est en cache on le touch pour le prolonger et on met un lock pour stopper les requetes 24h
Location:
_plugins_/gravatar
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/gravatar/gravatar_fonctions.php

    r88249 r88250  
    2525if (!defined('_GRAVATAR_CACHE_DELAY_CHECK_NEW')) define('_GRAVATAR_CACHE_DELAY_CHECK_NEW',3600*8); // 8h pour re-checker un user sans gravatar
    2626if (!defined('_GRAVATAR_CACHE_FALLBACK_COEFF')) define('_GRAVATAR_CACHE_FALLBACK_COEFF',10); // x10 si on utilise identicon etc.
    27 
     27if (!defined('_GRAVATAR_CACHE_DELAY_LOCK')) define('_GRAVATAR_CACHE_DELAY_LOCK',3600*24); // 24h si gravatar nous a locke
    2828
    2929/**
     
    171171
    172172        $tmp = sous_repertoire(_DIR_VAR, 'cache-gravatar');
     173        $lock_file = $tmp."gravatar.lock";
     174
    173175
    174176        $md5_email = md5(strtolower($email));
     
    187189        $gravatar_cache = $tmp.$gravatar_id.'.jpg';
    188190
    189         if (!defined('_GRAVATAR_CACHE_DELAY_REFRESH')) define('_GRAVATAR_CACHE_DELAY_REFRESH',3600*24); // 24h pour checker un existant
    190         if (!defined('_GRAVATAR_CACHE_DELAY_CHECK_NEW')) define('_GRAVATAR_CACHE_DELAY_CHECK_NEW',3600*8); // 8h pour re-checker un user sans gravatar
    191         if (!defined('_GRAVATAR_CACHE_FALLBACK_COEFF')) define('_GRAVATAR_CACHE_FALLBACK_COEFF',10); // x10 si on utilise identicon etc.
    192 
    193191        // inutile de rafraichir souvent les identicon etc qui ne changent en principe pas
    194192        $coeff_delai = ($default=='404' ? 1:_GRAVATAR_CACHE_FALLBACK_COEFF);
    195193        $duree = 0;
    196         if ((!file_exists($gravatar_cache)
    197         OR (
    198                 (($duree = $_SERVER['REQUEST_TIME'] - filemtime($gravatar_cache)) > _GRAVATAR_CACHE_DELAY_REFRESH*$coeff_delai)
    199                 AND $nb > 0
    200           ))
    201         ) {
    202                 if ($duree){
    203                         spip_log("Actualiser gravatar anciennete $duree s (cache maxi "._GRAVATAR_CACHE_DELAY_REFRESH*$coeff_delai."s)","gravatar");
     194        if (!file_exists($lock_file) OR $_SERVER['REQUEST_TIME']-filemtime($lock_file)>_GRAVATAR_CACHE_DELAY_LOCK){
     195
     196                if ((!file_exists($gravatar_cache)
     197                        OR (
     198                                (($duree = $_SERVER['REQUEST_TIME']-filemtime($gravatar_cache))>_GRAVATAR_CACHE_DELAY_REFRESH*$coeff_delai)
     199                                AND $nb>0
     200                        ))
     201                ){
     202                        if ($duree){
     203                                spip_log("Actualiser gravatar anciennete $duree s (cache maxi " . _GRAVATAR_CACHE_DELAY_REFRESH*$coeff_delai . "s)", "gravatar");
     204                        }
     205                        lire_fichier($tmp . 'vides.txt', $vides);
     206                        $vides = @unserialize($vides);
     207                        if ($vides===false) $vides = array();
     208                        if ($duree
     209                                OR (
     210                                        (!isset($vides[$gravatar_id]) OR (($duree_vide = time()-$vides[$gravatar_id])>_GRAVATAR_CACHE_DELAY_CHECK_NEW*$coeff_delai))
     211                                        AND $max-->0
     212                                )
     213                        ){
     214                                if ($duree_vide){
     215                                        spip_log("Actualiser gravatar vide $duree_vide s (cache maxi " . _GRAVATAR_CACHE_DELAY_CHECK_NEW*$coeff_delai . "s)", "gravatar");
     216                                }
     217
     218                                $nb--;
     219                                include_spip("inc/distant");
     220                                spip_timer('grvatar');
     221                                if ($gravatar
     222                                        = recuperer_page(_GRAVATAR_HOST . '/avatar/' . $md5_email . ($default ? "?d=$default" : "") . "&s=" . _TAILLE_MAX_GRAVATAR)
     223                                ){
     224                                        spip_log('gravatar ok pour ' . $email);
     225                                        ecrire_fichier($gravatar_cache, $gravatar);
     226                                        // si c'est un png, le convertir en jpg
     227                                        $a = @getimagesize($gravatar_cache);
     228                                        if ($a[2]==3) // png
     229                                        {
     230                                                if (!file_exists($gravatar_cache . '.png')){ // pour eviter un warning sous windows si le fichier existe deja
     231                                                        rename($gravatar_cache, $gravatar_cache . '.png');
     232                                                }
     233                                                include_spip('inc/filtres_images');
     234                                                $img = imagecreatefrompng($gravatar_cache . '.png');
     235                                                // Compatibilite avec la 2.1
     236                                                if (function_exists('_image_imagejpg')){
     237                                                        _image_imagejpg($img, $gravatar_cache);
     238                                                } else
     239                                                        image_imagejpg($img, $gravatar_cache);
     240                                        }
     241                                        if (isset($vides[$gravatar_id])){
     242                                                unset($vides[$gravatar_id]);
     243                                                ecrire_fichier($tmp . 'vides.txt', serialize($vides));
     244                                        }
     245                                } else {
     246                                        $dt = spip_timer('gravatar', true);
     247                                        // si ca a ete trop long, ne pas ressayer (IP serveur ban par gravatar ?)
     248                                        if ($dt>10000){
     249                                                $nb = 0;
     250                                                @touch($lock_file);
     251                                                spip_log("gravatar.com trop long a repondre, on lock $lock_file", "gravatar");
     252                                        }
     253                                        // si on a pas eu de reponse mais qu'un cache existe le prolonger pour eviter de rechecker tout le temps
     254                                        if ($duree){
     255                                                @touch($gravatar_cache);
     256                                        } else {
     257                                                $vides[$gravatar_id] = time();
     258                                                ecrire_fichier($tmp . 'vides.txt', serialize($vides));
     259                                        }
     260                                }
     261
     262                                gravatar_verifier_index($tmp);
     263                        }
    204264                }
    205                 lire_fichier($tmp.'vides.txt', $vides);
    206                 $vides = @unserialize($vides);
    207                 if ((!isset($vides[$gravatar_id])
    208                 OR ($duree = time()-$vides[$gravatar_id]) > _GRAVATAR_CACHE_DELAY_CHECK_NEW*$coeff_delai
    209                 ) AND $max-- > 0) {
    210                         if ($duree){
    211                                 spip_log("Actualiser gravatar vide $duree s (cache maxi "._GRAVATAR_CACHE_DELAY_CHECK_NEW*$coeff_delai."s)","gravatar");
    212                         }
    213 
    214                         $nb--;
    215                         include_spip("inc/distant");
    216                         if ($gravatar
    217                         = recuperer_page(_GRAVATAR_HOST . '/avatar/'.$md5_email.($default?"?d=$default":"")."&s="._TAILLE_MAX_GRAVATAR)
    218                         ) {
    219                                 spip_log('gravatar ok pour '.$email);
    220                                 ecrire_fichier($gravatar_cache, $gravatar);
    221                                 // si c'est un png, le convertir en jpg
    222                                 $a = @getimagesize($gravatar_cache);
    223                                 if ($a[2] == 3) // png
    224                                 {
    225                                         if (!file_exists($gravatar_cache.'.png')) { // pour eviter un warning sous windows si le fichier existe deja
    226                                                 rename($gravatar_cache, $gravatar_cache.'.png');
    227                                         }
    228                                         include_spip('inc/filtres_images');
    229                                         $img = imagecreatefrompng($gravatar_cache.'.png');
    230                                         // Compatibilite avec la 2.1
    231                                         if(function_exists('_image_imagejpg')){
    232                                                 _image_imagejpg($img, $gravatar_cache);
    233                                         }
    234                                         else
    235                                                 image_imagejpg($img, $gravatar_cache);
    236                                 }
    237                         } else {
    238                                 $vides[$gravatar_id] = time();
    239                                 ecrire_fichier($tmp.'vides.txt', serialize($vides));
    240                         }
    241 
    242                         gravatar_verifier_index($tmp);
    243                 }
     265
    244266        }
    245267
  • _plugins_/gravatar/paquet.xml

    r88249 r88250  
    22        prefix="gravatar"
    33        categorie="communication"
    4         version="1.5.5"
     4        version="1.5.6"
    55        etat="stable"
    66        compatibilite="[2.0.0;3.1.*]"
  • _plugins_/gravatar/plugin.xml

    r88249 r88250  
    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.5.5</version>
     5        <version>1.5.6</version>
    66        <etat>stable</etat>
    77        <slogan>
Note: See TracChangeset for help on using the changeset viewer.