Browse Source

Le troisieme argument obsolete $ecrire_quand_meme de ecrire_fichier est remplacé par un argument $ignorer_echec qui prend la même valeur par défaut (compatibilité des appels existants avec argument explicité).

Lorsqu'on le met à true, on évite une page d'erreur minipres sur une erreur d'écriture de fichier, et un unlink du fichier
Dans tous les cas, on ajoute un log pour traçabilité.

On utilise cet argument pour éviter de déclencher cette erreur lors de l'ecriture du cache des descriptions sql.
Ce type d'erreur arrive lors de calculs concurrents, et ne mérite pas une sanction si sévère.
svn/root/tags/spip-3.0.4
Cerdic 9 years ago
parent
commit
e92a1c2472
  1. 2
      ecrire/base/trouver_table.php
  2. 16
      ecrire/inc/flock.php

2
ecrire/base/trouver_table.php

@ -137,7 +137,7 @@ function base_trouver_table_dist($nom, $serveur='', $table_spip = true){
// une nouvelle table a ete decrite
// mettons donc a jour le cache des descriptions de ce serveur
if (is_writeable(_DIR_CACHE))
ecrire_fichier($nom_cache_desc_sql[$serveur][$objets_sql],serialize($connexion['tables']));
ecrire_fichier($nom_cache_desc_sql[$serveur][$objets_sql],serialize($connexion['tables']),true);
}
else
$res = &$connexion['tables'][$nom_sql];

16
ecrire/inc/flock.php

@ -120,11 +120,10 @@ function lire_fichier ($fichier, &$contenu, $options=false) {
//
// Ecrire un fichier de maniere un peu sure
// $ecrire_quand_meme ne sert plus mais est conservee dans l'appel pour compatibilite
//
//
// zippe les fichiers .gz
// http://doc.spip.org/@ecrire_fichier
function ecrire_fichier ($fichier, $contenu, $ecrire_quand_meme = false, $truncate=true) {
function ecrire_fichier ($fichier, $contenu, $ignorer_echec = false, $truncate=true) {
#spip_timer('ecrire_fichier');
@ -183,10 +182,13 @@ function ecrire_fichier ($fichier, $contenu, $ecrire_quand_meme = false, $trunca
if ($ok) return $ok;
}
include_spip('inc/autoriser');
if (autoriser('chargerftp'))
raler_fichier($fichier);
spip_unlink($fichier);
if (!$ignorer_echec){
include_spip('inc/autoriser');
if (autoriser('chargerftp'))
raler_fichier($fichier);
spip_unlink($fichier);
}
spip_log("Ecriture fichier $fichier impossible",_LOG_INFO_IMPORTANTE);
return false;
}

Loading…
Cancel
Save