Programmation » [PHP] Lancer un process background
    Catégorie:  
       
    [PHP] Lancer un process background
    Publié le 19/01/2007 @ 10:36:05,
    Par cauet
    Salut.

    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 ovh
    Essaie 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 rfr
    pourquoi 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 cauet
    rfr> 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?
       
    [PHP] Lancer un process background
    Publié le 19/01/2007 @ 11:29:49,
    Par cauet
    En 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...
       
    [PHP] Lancer un process background
    Publié le 19/01/2007 @ 11:48:34,
    Par zion
    Sinon 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... :itm:
    Je suis le Roy :ocube:
       
    [PHP] Lancer un process background
    Publié le 19/01/2007 @ 11:50:52,
    Par cauet
    Et 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)
       
    [PHP] Lancer un process background
    Publié le 19/01/2007 @ 12:50:04,
    Par zion
    Oui, 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.
    Je suis le Roy :ocube:
       
    [PHP] Lancer un process background
    Publié le 19/01/2007 @ 13:48:28,
    Par cauet
    :alph-one:
       
    [PHP] Lancer un process background
    Publié le 19/01/2007 @ 23:17:31,
    Par cauet
    Pour info, j'ai implémenté le protocole SMPP!
    Y'a franchement pas photo... avant: 2000ms à présent: 20ms :petrus:
    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é :dawa:
       
    [PHP] Lancer un process background
    Publié le 05/02/2007 @ 15:59:56,
    Par cauet
    Bon, 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?
       
    [PHP] Lancer un process background
    Publié le 05/02/2007 @ 16:07:09,
    Par cauet
    C'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 \$!");


    :smile:
       
    [PHP] Lancer un process background
    Publié le 05/02/2007 @ 17:12:58,
    Par cauet
    et si on fait $pid = devant, devinez quelle valeur renvoie cette variable.. bien pratique :smile:
    Répondre - Catégorie:  
    Informaticien.be - © 2002-2026 AkretioSPRL  - Generated via Kelare
    The Akretio Network: Akretio - Freedelity - KelCommerce - Votre publicité sur informaticien.be ?