Jump to content

petit pb spécial...


Recommended Posts

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 ?

Link to post
Share on other 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

Link to post
Share on other 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...

Edited by michel durand
Link to post
Share on other 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..

Link to post
Share on other 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

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...