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

Gerer les erreurs de recuperation lors de copie_locale pour eviter de stocker...

Gerer les erreurs de recuperation lors de copie_locale pour eviter de stocker un fichier corrompu et inutilisable + PHP Doc
parent 196065e3
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -41,11 +41,13 @@ function creer_pass_aleatoire($longueur = 8, $sel = "") {
return $pass;
}
//
// Creer un identifiant aleatoire
//
// http://doc.spip.org/@creer_uniqid
/**
* Creer un identifiant aleatoire
*
* http://doc.spip.org/@creer_uniqid
*
* @return string
*/
function creer_uniqid() {
static $seeded;
......
......@@ -70,9 +70,22 @@ function copie_locale($source, $mode = 'auto', $local = null){
return $local;
if ($mode=='modif' OR !$t){
$res = recuperer_page($source, $localrac, false, _COPIE_LOCALE_MAX_SIZE, '', '', false, $t ? filemtime($localrac) : '');
// passer par un fichier temporaire unique pour gerer les echecs en cours de recuperation
// et des eventuelles recuperations concurantes
include_spip("inc/acces");
$localractmp = "$localrac.".creer_uniqid().".tmp";
$res = recuperer_page($source, $localractmp, false, _COPIE_LOCALE_MAX_SIZE, '', '', false, $t ? filemtime($localrac) : '');
if ($res) {
// si OK on supprime l'ancien fichier et on renomme
spip_log("copie_locale : recuperation $source sur $localractmp taille $res OK, renommage en $localrac");
spip_unlink($localrac);
@rename($localractmp, $localrac);
} else {
// sinon on supprime le fichier temporaire qui a echoue et qui est sans doute corrompu...
spip_log("copie_locale : Echec recuperation $source sur $localractmp, fichier supprime",_LOG_INFO_IMPORTANTE);
spip_unlink($localractmp);
}
if (!$res) return $t ? $local : false;
# spip_log ('ecrire copie locale '.$localrac." taille $res");
// pour une eventuelle indexation
pipeline('post_edition',
......
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