Page 1 sur 2
fork ou duplication de script php
Posté : 15 févr. 2006, 15:50
par delcedo galaxialord
Bonjour !
Voici mon script :
<?php
if($_GET['v'])
{
system("php test.php");
echo 1;
}
else
sleep(10);
?>
Peut être certains auront compris mon but : j'aimerai dupliquer l'exécution de test.php, le processus parent appellerait le fils (qui exécuterait sleep(10)) et continuerait son exécution.
Or, ce qui m'embête, c'est que le père attend la fin de l'exécution de la commande system("php test.php"), et attend donc 10 secondes. Je ne veux pas de cette attente. Quelqu'un a-t-il une idée ?
(j'ai cherché avec pnctl_fork et apparement ce n'est que pour le php-cli (php fenêtre je crois))
Merci !
Olivier.
Posté : 15 févr. 2006, 17:00
par fab
php-cli est php en console voir un début d'article de moi sur
http://phpteam.net 
En ce qui concerne pcntl_fork je ne vois rien sur la doc qui dit que c'est réservé pour php-cli. en fait la tu appel une page web ?
dans ce cas là pourquoi ne pas faire simplement un include ou require???
Posté : 15 févr. 2006, 17:17
par delcedo galaxialord
Salut !
j'ai installé php-cli pour php5 sur mon serveur (pour avoir accès à pcntl_fork), mais la fonction reste inaccessible.
Je ne peux pas faire de require car je ne veux pas une lecture séquentielle, mais concurrente, avec un require mon problème resterait le même, je devrais attendre la fin de l'exécution (les 10 secondes) avant de pouvoir reprendre mon script parent.
Posté : 15 févr. 2006, 17:28
par fab
début de réponse pcntl n'est dispo que sous linux
Posté : 15 févr. 2006, 17:37
par delcedo galaxialord
j'ai linux (debian)
Posté : 15 févr. 2006, 17:44
par fab
hum bizarre dans ce cas je ne comprend pas pourquoi tu n'as pas acces a cette fonction.
en plus si tu executes le programme depuis exec tu dois donc utiliser php-cli
regarde si tu n'as pas un éxécutable php-cli et non php
Posté : 15 févr. 2006, 17:48
par rami
tu as bien compilé la version CLI avec --enable-pcntl ?
Posté : 15 févr. 2006, 17:50
par fab
c'est par default ça il me semble
Posté : 15 févr. 2006, 17:59
par delcedo galaxialord
Euh

j'ai juste fait apt-get install php5cli et j'ai restart le serveur.
Posté : 15 févr. 2006, 18:02
par fab
regarde ce que tu as dans le ./configure du phpinfo()
Posté : 15 févr. 2006, 22:05
par rami
Issu de la doc PHP
Installation
Le support du contrôle des processus n'est pas activé par défaut en PHP. Vous devez compiler la version CLI ou CGI de PHP avec l'option de configuration --enable-pcntl pour activer le support de cette extension.
Posté : 16 févr. 2006, 16:01
par titerm
tu devrais regarder du coté de proc_open(), je pense que cela pourrait répondre a tes besoins...
Posté : 18 févr. 2006, 11:41
par delcedo galaxialord
merci à tous ! et plus particulièrement à titerm
proc_open() fait exactement ce que je veux, il n'interrompt pas l'exécution de mon script et lance l'autre. Impecable
A bientot

Posté : 23 févr. 2006, 17:11
par delcedo galaxialord
Non en fait ca ne marche pas...
Vous avez parlé de "compiler", comment s'y prend-on sous debian ? Sachant que j'ai juste fait, à la base, un "apt-get install php5", idem pour mysql et phpmyadmin, j'ai rajouté ensuite "gd" (via la même commande) et le cli aussi.
Merci beaucoup !
Posté : 24 févr. 2006, 11:56
par titerm
J'utilise cette commande pour lancer un parser xgml en arrière plan et c'est mon fichier php qui traite la sortie du parser....
Si cela ne marche pas, c'est certainement que tu as une contrainte que tu n'as pas mentionné