Version complète: sur le forum Webmaster Hub : petit pb spécial...
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
michel durand
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 ?
Théo B.
fileexists() :
CODE
<?
$fichier='/include/inclure.php';
if (file_exists($fichier)) {
  include($fichier);
} else {
  echo "Fichier en upload.";
}
?>
Dan
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:
CODE
<?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
michel durand
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...
Anonymus
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..
michel durand
CITATION
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 ?
CITATION
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
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.