Php fonction exec ne se termine plus
matdev
Messages postés
28
Statut
Membre
-
matdev Messages postés 28 Statut Membre -
matdev Messages postés 28 Statut Membre -
Bonjour,
j'ai développé un petit script php pour un intranet qui me génère un fichier que je transfert vers un port série pour être imprimé par une étiquetteuse.
Pour effectuer se transfert, je passe par une commande dos que j'éxecute avec la fonction php exec().
Le problème est le suivant, mon script se lance, le fichier est bien généré, l'exec dos envoie bien mon document vers mon port et donc il est bien imprimé MAIS l'exec ne se termine pas est dur indéfinimant .... si je ferme la fenetre le reste de l'application est tout de même plantée et je ne peu rien faire sans l'arreter et la redémarrer.
Voici le code que j'utilise :
Comment faire pour que la fonction exec() se termine enfin ????
j'ai développé un petit script php pour un intranet qui me génère un fichier que je transfert vers un port série pour être imprimé par une étiquetteuse.
Pour effectuer se transfert, je passe par une commande dos que j'éxecute avec la fonction php exec().
Le problème est le suivant, mon script se lance, le fichier est bien généré, l'exec dos envoie bien mon document vers mon port et donc il est bien imprimé MAIS l'exec ne se termine pas est dur indéfinimant .... si je ferme la fenetre le reste de l'application est tout de même plantée et je ne peu rien faire sans l'arreter et la redémarrer.
Voici le code que j'utilise :
<?php
//ouverture du port associé à la borne
$bornes=new Bornes();
$borne=$bornes->fetchRow('nom="'.gethostbyaddr($_SERVER['REMOTE_ADDR']).'" and ip="'.$_SERVER['REMOTE_ADDR'].'"');
$fichier=str_pad($this->client->id,"0", STR_PAD_LEFT).str_pad($borne->id,"0", STR_PAD_LEFT).date('YmdHis').".txt";
$fictxt=fopen("D:/www/borneedition/public/tmp_txt/".$fichier,"w+");
$str="";
foreach($this->client->getBonsAImprimer2($this->date) as $bon){
if($ancienticket!=$bon->ticket_id){
$ancienticket=$bon->ticket_id;
/********recup des info pour le bon dans $str*********/
}
fputs($fictxt,$str);
fclose($fictxt);
$cmd="COPY D:\\www\\borneedition\\public\\tmp_txt\\".$fichier." \\\\.\\".$borne->COM_zebra;
exec($cmd,$outputexec);
unlink("D:\\www\\borneedition\\public\\tmp_txt\\".$fichier);
?>
Comment faire pour que la fonction exec() se termine enfin ????
2 réponses
-
C est peut etre qu il manque un accusé de reception de l'etiqueteuse...
L'operateur dos copy n est pas adapté.
Peut etre que un genre de Send ou une commande qui n'a pas de retour fonctionnerai...
Sinon en lancant le processus puis avec sleep(30); et un "kill process " ??? -
Le soucis c'est que je ne trouve pas d'autre commande pour faire cela.
après mon script php est bloqué sur la commande exec et je ne peux donc pas passer à autre chose et donc tu le processus par une autre commande.