Aller au contenu

petit pb spécial...


michel durand

Sujets conseillés

Bonjour

j'ai un pb bien spécial..

voila..j'ai un cron qui tourne toute les 1 minutes qui boucle toutes les 1 sec sur un include d'un fichier php...

pb : quand j'uploade une nouvelle version de l'include ça plante ce qui est logique car le script include un fichier qui n'est pas complet donc résultat : erreur php

auriez vous une idée brillante pour palier à ce problème ? je ne voie pas comment tester le fichier avant include...is_readable peut être ?

Lien vers le commentaire
Partager sur d’autres sites

Je ne pense pas que fileexists() puisse aider, parce que le fichier existera même s'il n'est pas complet.

Deux solutions:

- la première est de mettre un lock sur le fichier lors de l'upload

- la seconde est de faire l'upload sous un autre nom, et ensuite faire un mv (move ou rename) de ce nouveau nom vers l'ancien.

Un code d'exemple pour le verrou:

<?php

$fp = fopen("/tmp/lock.txt", "w+");

if (flock($fp, LOCK_EX)) { // pose un verrou exclusif
   fwrite($fp, "Ecrire dans le fichier\n");
   flock($fp, LOCK_UN); // libère le verrou
} else {
   echo "Impossible de verrouiller le fichier!";
}
fclose($fp);
?>

Dan

Lien vers le commentaire
Partager sur d’autres sites

effectivement file_exists ne fonctionnera pas..le lock est une option mais nécéssite une opération manuelle avant chaque upload.

je crois que j'ai vais plutot faire un read du fichier et si je ne trouve pas la balise ?> de fin de php c'est que le fichier n'est pas uploadé jusqu'au bout...j'espère que l'upload ne commence pas par la fin...

Modifié par michel durand
Lien vers le commentaire
Partager sur d’autres sites

lock ne nécessite pas d'opérations manuelles, il y a une commande php, donnée par Dan : flock, qui pose et libère le verrou sur le fichier.

Le problème de ta solution à base de "?>" est qu'il peut très bien y avoir un ?> au milieu de ton fichier, ce qui ne résoudrait pas ton problème..

Lien vers le commentaire
Partager sur d’autres sites

lock ne nécessite pas d'opérations manuelles, il y a une commande php, donnée par Dan : flock, qui pose et libère le verrou sur le fichier.

-> sauf que l'include en question est accédé par plusieurs crons..donc on ne peux pas locker exclusif...et puis un lock exclusif n'empeche pas l'upload ftp sur le fichier non ?

Le problème de ta solution à base de "?>" est qu'il peut très bien y avoir un ?> au milieu de ton fichier, ce qui ne résoudrait pas ton problème..

-> je peux aussi mettre un code du genre

/*end*/?>

a reconnaitre

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...