michel durand Posté 26 Février 2006 Partager Posté 26 Février 2006 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 More sharing options...
Théo B. Posté 26 Février 2006 Partager Posté 26 Février 2006 fileexists() : <?$fichier='/include/inclure.php';if (file_exists($fichier)) { include($fichier);} else { echo "Fichier en upload.";}?> Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dan Posté 26 Février 2006 Partager Posté 26 Février 2006 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 More sharing options...
michel durand Posté 26 Février 2006 Auteur Partager Posté 26 Février 2006 (modifié) 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é 26 Février 2006 par michel durand Lien vers le commentaire Partager sur d’autres sites More sharing options...
Anonymus Posté 26 Février 2006 Partager Posté 26 Février 2006 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 More sharing options...
michel durand Posté 26 Février 2006 Auteur Partager Posté 26 Février 2006 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 More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant