Bonjour à tous,
je rencontre un problème lors de mon utilisation avec une socket.
J'ai une page web <gras>execution.php</gras> me permettant de communiquer, via une socket locale, avec un programme écrit en C (dont la fonction est d'exécuter un programme particulier).
Idéalement, je voudrais que ma page php envoie une série d'arguments au programme C via la socket puis me redirige vers une autre page.
Or, ici ma socket est bloquante et après avoir envoyé les arguments, la page <gras>execution.php</gras> reste en attente et ne me redirige pas vers l'autre page. En fait, la page attent que l'exécution du programme lancé par C soit finie avant de me rediriger.
Voici le code php :
J'envoie donc les arguments, j'attends de recevoir le pid du programme lancé par le programme C et ensuite je veux rediriger sans attendre la fin du programme lancé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 <?php $idSocket = fsockopen("127.0.0.1",5000, $codeErreur, $msgErreur); // Envoi de données au pgm C fputs($idSocket,$path."\0"); $PID = fgets($idSocket,34); fclose($idSocket); header('location:process.php?currentPid='.$PID); exit(); ?>
Du côté du code C, j'envoie pourtant le "pid" à C avant l'exécution donc en pratique je ne devrais pas attendre la fin de l'exécution du programme.
Je ne comprends pas alors pourquoi je reste bloqué sur la page <gras>execution.php</gras> le temps de l'exécution.
Voici le code C :
Comprenez-vous pourquoi, après avoir reçu le pid du côté php je ne suis pas rediriger directement?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 //Reception des arguments recv(socket,buffer, sizeof(execution.path), 0); //Envoie du PID du processus courant à PHP send(socket,pid_String,sizeof(char)*4,0); //Execution du programme flux = popen (execution.path, "r");
Merci d'avance
Partager