fork ou duplication de script php

Eléphant du PHP | 153 Messages

15 févr. 2006, 15:50

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.
http://gl2.delcedo.com/ Galaxialord 2 !

ViPHP
fab
ViPHP | 2657 Messages

15 févr. 2006, 17:00

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???
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }

Eléphant du PHP | 153 Messages

15 févr. 2006, 17:17

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.
http://gl2.delcedo.com/ Galaxialord 2 !

ViPHP
fab
ViPHP | 2657 Messages

15 févr. 2006, 17:28

début de réponse pcntl n'est dispo que sous linux
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }

Eléphant du PHP | 153 Messages

15 févr. 2006, 17:37

j'ai linux (debian)
http://gl2.delcedo.com/ Galaxialord 2 !

ViPHP
fab
ViPHP | 2657 Messages

15 févr. 2006, 17:44

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
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }

Mammouth du PHP | 983 Messages

15 févr. 2006, 17:48

tu as bien compilé la version CLI avec --enable-pcntl ?

ViPHP
fab
ViPHP | 2657 Messages

15 févr. 2006, 17:50

c'est par default ça il me semble
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }

Eléphant du PHP | 153 Messages

15 févr. 2006, 17:59

Euh :o j'ai juste fait apt-get install php5cli et j'ai restart le serveur.
http://gl2.delcedo.com/ Galaxialord 2 !

ViPHP
fab
ViPHP | 2657 Messages

15 févr. 2006, 18:02

regarde ce que tu as dans le ./configure du phpinfo()
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }

Mammouth du PHP | 983 Messages

15 févr. 2006, 22:05

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.

Mammouth du PHP | 505 Messages

16 févr. 2006, 16:01

tu devrais regarder du coté de proc_open(), je pense que cela pourrait répondre a tes besoins...

Eléphant du PHP | 153 Messages

18 févr. 2006, 11:41

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 :)
http://gl2.delcedo.com/ Galaxialord 2 !

Eléphant du PHP | 153 Messages

23 févr. 2006, 17:11

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 !
http://gl2.delcedo.com/ Galaxialord 2 !

Mammouth du PHP | 505 Messages

24 févr. 2006, 11:56

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é