Changeset 111039 in spip-zone


Ignore:
Timestamp:
Jul 9, 2018, 7:41:48 AM (3 years ago)
Author:
cedric@…
Message:

le fichier archives.xml est reecrit a chaque passage, provoquant des tonnes de rechargement chaque heure, ce qui est pas tres ecologique.
On change de strategie en utilisant md5_file() pour comparer son empreinte, ce qui semble plus robuste que lire le fichier et le comparer au contenu qu'on s'apprete a ecrire, ce qui semble echouer a cause d'espaces en plus ou en moins ?

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _outils_/smart_paquets/inc_empaqueteur.php

    r91829 r111039  
    603603{
    604604        $taille = strlen($archives);
    605         $f = $dir_paq . $dir_repo . $nom_fichier;
    606         $old = (file_exists($f)) ? trim(file_get_contents($f)) : '';
    607         if ($old != $archives) {
    608                 // Creation du fichier xml
    609                 echo_trace("Nouveau $f de taille $taille");
    610                 file_put_contents($f, $archives);
    611                 // Creation du fichier contenant le sha du fichier xml
    612                 $sha = $dir_paq . $dir_repo . basename($nom_fichier, '.xml') . '.sha';
    613                 file_put_contents($sha, sha1_file($f));
    614                
    615                 return;
    616         }
    617         echo_trace("$f intact (taille: $taille)");
     605        $fichier = $dir_paq . $dir_repo . $nom_fichier;
     606        $fichier_tmp = $fichier . '.last';
     607        // ecriture du fichier xml dans un fichier archives.xml.last
     608        file_put_contents($fichier_tmp, $archives);
     609
     610        // on compare le md5 de archives.xml.last et archives.xml
     611        // et on update archives.xml uniquement si il a change
     612        if (!file_exists($fichier) or md5_file($fichier)!==md5_file($fichier_tmp)) {
     613                @rename($fichier_tmp, $fichier);
     614                echo_trace("Nouveau $fichier de taille $taille");
     615        }
     616        else {
     617                echo_trace("$fichier non modifie (taille: $taille)");
     618        }
     619
    618620}
    619621
Note: See TracChangeset for help on using the changeset viewer.