Php fonction exec ne se termine plus

Fermé
matdev Messages postés 26 Date d'inscription mardi 19 mai 2009 Statut Membre Dernière intervention 6 janvier 2011 - 5 nov. 2010 à 14:28
matdev Messages postés 26 Date d'inscription mardi 19 mai 2009 Statut Membre Dernière intervention 6 janvier 2011 - 8 nov. 2010 à 10:18
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 :
<?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 ????
A voir également:

2 réponses

Fallentree Messages postés 2309 Date d'inscription mercredi 25 février 2009 Statut Membre Dernière intervention 22 juillet 2019 209
5 nov. 2010 à 18:33
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 " ???
0
matdev Messages postés 26 Date d'inscription mardi 19 mai 2009 Statut Membre Dernière intervention 6 janvier 2011 5
8 nov. 2010 à 10:18
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.
0