Skip to content
Extraits de code Groupes Projets
Valider 410e89c3 rédigé par cerdic's avatar cerdic
Parcourir les fichiers

Une fonction ecrire_fichier_calcule_si_modifie() pour ecrire les fichier...

Une fonction ecrire_fichier_calcule_si_modifie() pour ecrire les fichier produit automatiquement uniquement si leur contenu md5 change (on passe par un fichier intermediaire suffixe par .last qui reste tel quel si il n'est pas different du contenu deja existant)
+ utilisation dans la fonction produire_fond_statique()
parent 9ef22910
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -4646,15 +4646,8 @@ function produire_fond_statique($fond, $contexte = array(), $options = array(),
// mais on peut mettre un md5 du contenu, ce qui donne un aperu rapide si la feuille a change ou non
$comment .= "}\n md5:" . md5($contenu) . " */\n";
}
// et ecrire le fichier
ecrire_fichier($filename . ".last", $comment . $contenu);
// regarder si on recopie
if (!file_exists($filename)
or md5_file($filename) !== md5_file($filename . ".last")
) {
@copy($filename . ".last", $filename);
clearstatcache(true, $filename); // eviter que PHP ne reserve le vieux timestamp
}
// et ecrire le fichier si il change
ecrire_fichier_calcule_si_modifie($filename, $comment . $contenu, false, true);
}
return timestamp($filename);
......
......@@ -322,6 +322,34 @@ function ecrire_fichier_securise($fichier, $contenu, $ecrire_quand_meme = false,
return ecrire_fichier($fichier, $contenu, $ecrire_quand_meme, $truncate);
}
/**
* @param string $fichier
* @param string $contenu
* @param bool $force
* @return bool
*/
function ecrire_fichier_calcule_si_modifie($fichier, $contenu, $force=false, $use_copy=false) {
$fichier_tmp = $fichier . '.last';
if (!ecrire_fichier($fichier_tmp, $contenu, true)){
return false;
}
if ($force
or !file_exists($fichier)
or md5_file($fichier) != md5_file($fichier_tmp)) {
if ($use_copy) {
@copy($fichier_tmp, $fichier);
}
else {
@rename($fichier_tmp, $fichier);
}
// eviter que PHP ne reserve le vieux timestamp
clearstatcache(true, $fichier);
}
return true;
}
/**
* Lire un fichier encapsulé en PHP
*
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter