Programmation » [PHP] Lancer un process background
[PHP] Lancer un process background
Publié le 19/01/2007 @ 10:36:05,
Par cauetSalut.
Sur un backoffice je dois lancer un processus php qui peut prendre de 1min à ... plusieurs heures.
Avec l'HTTP je suis lié au problème de keep-alive, et obliger le client à laisser son navigateur ouvert ne m'enchante pas trop.
Le but serait de lancer avec mon script principal un autre processus en bash.
exemple:
exec('/usr/bin/php5 /home/file/test.php argument argument');
Mais, en théorie ce script s'arrêtera également de tourner si on kill le script principal.
Y'a t'il une solution miracle?
Merchui.
Sur un backoffice je dois lancer un processus php qui peut prendre de 1min à ... plusieurs heures.
Avec l'HTTP je suis lié au problème de keep-alive, et obliger le client à laisser son navigateur ouvert ne m'enchante pas trop.
Le but serait de lancer avec mon script principal un autre processus en bash.
exemple:
exec('/usr/bin/php5 /home/file/test.php argument argument');
Mais, en théorie ce script s'arrêtera également de tourner si on kill le script principal.
Y'a t'il une solution miracle?
Merchui.
[PHP] Lancer un process background
Publié le 19/01/2007 @ 10:53:56,
Par ovhEssaie en utilisant le & Ã la de fin de la ligne de commande, ce qui a pour effet de mettre le processus en background.
Je n'ai rien à voir avec www.ovh.com
[PHP] Lancer un process background
Publié le 19/01/2007 @ 11:04:37,
Par rfrpourquoi ne pas 'demoniser' le script php qui écouterait sur un socket et qui attendrait ses ordres d'un client.
To die is a time consuming activity, it often takes a lifetime (but some are faster than others ... though)
[PHP] Lancer un process background
Publié le 19/01/2007 @ 11:20:31,
Par cauetrfr> Ce serait la solution de luxe en effet.. je vais y plancher.
Le problème serait d'envoyer la requête à ce script daemon, comment?
ovh> Ca marchera tu pense?
Le problème serait d'envoyer la requête à ce script daemon, comment?
ovh> Ca marchera tu pense?
[PHP] Lancer un process background
Publié le 19/01/2007 @ 11:29:49,
Par cauetEn fait je viens de contacter mon opérateur wholesale.
Il m'a dit qu'il y à une autre solution que le HTTP/TCP pour mes envois massif.
Par coup de 2000 Ã 10000 ... ca fait bosser les serveurs Web et pas un peu...
Il est en train de me configurer des accès SMPP, ce qui accélèrera les échanges énormément.
Wait & see...
Il m'a dit qu'il y à une autre solution que le HTTP/TCP pour mes envois massif.
Par coup de 2000 Ã 10000 ... ca fait bosser les serveurs Web et pas un peu...
Il est en train de me configurer des accès SMPP, ce qui accélèrera les échanges énormément.
Wait & see...
[PHP] Lancer un process background
Publié le 19/01/2007 @ 11:48:34,
Par zionSinon t'as aucun problème pour continuer le script alors que le mec a fermé son browser. Tant que tu ne gères pas la fonction script_cancelled ou un truc du genre tu t'en * complètement.
La seule chose que tu dois faire pour éviter un timeout c'est évidemment le time_limit de PHP que tu dois faire sauter avec un joli 0 et soit tu fais un apache_reset_timeout dans ta boucle soit tu affiches un "." pour le plaisir de temps à autres.
Ton script pourra tourner des années comme ça si tu veux, promis...
La seule chose que tu dois faire pour éviter un timeout c'est évidemment le time_limit de PHP que tu dois faire sauter avec un joli 0 et soit tu fais un apache_reset_timeout dans ta boucle soit tu affiches un "." pour le plaisir de temps à autres.
Ton script pourra tourner des années comme ça si tu veux, promis...
Je suis le Roy
[PHP] Lancer un process background
Publié le 19/01/2007 @ 11:50:52,
Par cauetEt donc, si j'ai un script PHP qui boucle avec une jolie erreur, il va tourner à vie aussi?
j'ai toujours pensé qu'un timeout se faisait après X temps de non réponse du navigateur.. (vu que la page n'a jamais fini de charger)
j'ai toujours pensé qu'un timeout se faisait après X temps de non réponse du navigateur.. (vu que la page n'a jamais fini de charger)
[PHP] Lancer un process background
Publié le 19/01/2007 @ 12:50:04,
Par zionOui, il va tourner à vie aussi.
Et non, il n'y a pas de timeout, ton script peut tourner sans même trace de ton navigateur, le keep-alive dont tu parles n'a strictement aucun rapport.
Et non, il n'y a pas de timeout, ton script peut tourner sans même trace de ton navigateur, le keep-alive dont tu parles n'a strictement aucun rapport.
Je suis le Roy
[PHP] Lancer un process background
Publié le 19/01/2007 @ 23:17:31,
Par cauetPour info, j'ai implémenté le protocole SMPP!
Y'a franchement pas photo... avant: 2000ms à présent: 20ms
Et en plus je ne fait la phase identification qu'une seule fois, ce qui augmente la rapidité des envois suivants..
Bon, je vais quand même passer tout ça dans un script différent à présent.
On va essayer le "&" qu'ovh à proposé
Y'a franchement pas photo... avant: 2000ms à présent: 20ms
Et en plus je ne fait la phase identification qu'une seule fois, ce qui augmente la rapidité des envois suivants..
Bon, je vais quand même passer tout ça dans un script différent à présent.
On va essayer le "&" qu'ovh à proposé
[PHP] Lancer un process background
Publié le 05/02/2007 @ 15:59:56,
Par cauetBon, me revoilà .
Ca à beau être plus rapide, j'ai toujours besoin de détacher le script du père, ca reste trop long.
Ma commande:
exec("/usr/bin/php5 /home/smsdata/automation/envoismsdetache.php ".$orderID." &");
Le problème, c'est que le "&" ne fonctionne pas.. j'ai foutu un sleep(10) dans envoismsdetache.php et ma page web ne s'affiche qu'après 10 secondes...
Alors, une brillante idée?
Ca à beau être plus rapide, j'ai toujours besoin de détacher le script du père, ca reste trop long.
Ma commande:
exec("/usr/bin/php5 /home/smsdata/automation/envoismsdetache.php ".$orderID." &");
Le problème, c'est que le "&" ne fonctionne pas.. j'ai foutu un sleep(10) dans envoismsdetache.php et ma page web ne s'affiche qu'après 10 secondes...
Alors, une brillante idée?
[PHP] Lancer un process background
Publié le 05/02/2007 @ 16:07:09,
Par cauetC'est bon j'ai trouvé!
Dans les commentaires de la fonction PHP:
exec("/usr/bin/php5 /home/smsdata/automation/envoismsdetache.php ".$orderID." > /dev/null & echo \$!");
Dans les commentaires de la fonction PHP:
exec("/usr/bin/php5 /home/smsdata/automation/envoismsdetache.php ".$orderID." > /dev/null & echo \$!");
[PHP] Lancer un process background
Publié le 05/02/2007 @ 17:12:58,
Par cauetet si on fait $pid = devant, devinez quelle valeur renvoie cette variable.. bien pratique