IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Lancer une commande sans attendre la fin du processus pour passer au reste du script


Sujet :

Langage PHP

  1. #1
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut Lancer une commande sans attendre la fin du processus pour passer au reste du script
    Bonjour,

    Suite à ce script,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      for ($i=1; $i<=5; $i++)
      {
        system('bin\php\php.exe apps\agent.php');
      }
    Existe t'il une fonction pour lancer une commande DOS, sans attendre la fin de son exécution du processus lancer (celui ci ne s'arrête jamais) ?

    P.S : ce script n'est pas dédié pour du WEB !

    Merci d'avance

    Arnaud

  2. #2
    Membre averti Avatar de sohnic
    Femme Profil pro
    bioinfo
    Inscrit en
    Mai 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : bioinfo

    Informations forums :
    Inscription : Mai 2003
    Messages : 426
    Points : 434
    Points
    434
    Par défaut
    Bonjour,
    Tu peux faire comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    pclose(popen('bin\php\php.exe apps\agent.php &', 'r'));
    Bye,

    Sohnic
    http://www.noctinfo.fr/

    (\ _ /)
    (='.'=) Voici Lapinou. Aidez-le à conquérir le monde en le reproduisant.
    (")-(")

  3. #3
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut
    niquel ca fonctionne !

    par contre, j'ai fais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      for ($i=1; $i<=_APPS_NB_PROCESSUS; $i++)
      {
        pclose(popen('start bin\php\php.exe apps\agent.php &', 'r'));
      }
    j'ai ajouter un start dans la commande. J'ai donc 5 fenetre qui s'ouvre en executant chacun leurs processus.

    Le faire ne ne pas mettre de start, cela fait la meme chose mais en arrière plan ?

  4. #4
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut
    Je répond peut etre en me trompant, mais il me semble que les processus lancer par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    pclose(popen('bin\php\php.exe apps\agent.php &', 'r'));
    n'execute pas la commande.

    par contre en fesant un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pclose(popen('start bin\php\php.exe apps\agent.php &', 'r'));
    nickel !

    En effet, mes processus lancer créer des logs et avec la 1er manière j'ai aucun log, la seconde, oui...

  5. #5
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut
    Alors j'ai modifier la commande pour avoir enfin se que je voulais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pclose(popen('bin\php\php.exe apps\agent.php &', 'w'));
    en effet j'ai passé le paramètre de r à w (comme write). Cela permet à mes processus de créer leur fichier de log.

    Par contre, une question :

    Pendant un certain temps, le script ne me rend pas la main, mais après oui. Les processus tourne toujours. Si je ferme mon script (lui aussi lancer avec php.exe en dos vu que je vais du script système), mes processus seront bien stoppé ?

  6. #6
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut
    Donc après plein de tests voici ce que je dois faire pour avoir chaque processus tournant indépendamment :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pclose(popen('start bin\php\php.exe apps\agent.php ', 'w'));
    Dans la commande lancer, je suis obliger de mettre "start", car sans, mon processus suivant n'est jamais lancer. Le "w" pour pouvoir écrire le fichier de log.

    Si vous avez une solution de mieux, j'attend vos propositions.

    Ce qui serai bien c'est de ne pas voir apparaitre les fenetre CMD lancer par le start...

    le script actuel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      for ($i=1; $i<=5; $i++)
      {
          pclose(popen('start bin\php\php.exe apps\agent.php', 'w'));
      }
    P.S : petite précision, je suis sous windows ! donc le & pour mettre le script en deamon j'y avais pensé, mais sur windows, il n'y a pas d'équivalent ?

  7. #7
    Membre averti Avatar de sohnic
    Femme Profil pro
    bioinfo
    Inscrit en
    Mai 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : bioinfo

    Informations forums :
    Inscription : Mai 2003
    Messages : 426
    Points : 434
    Points
    434
    Par défaut
    Tu as travaillé sur la question !
    Désolée, mais je connais bien mieux linux que DOS. Je ne sais pas comment resoudre ton pb de terminal.... Je me sers de cette fonctionnalité pour gérer les problèmes de timeout des serveurs web, mais dans ton cas, je ne sais pas comment tu pourrais améliorer le code....

    Bon courage,

    S.
    http://www.noctinfo.fr/

    (\ _ /)
    (='.'=) Voici Lapinou. Aidez-le à conquérir le monde en le reproduisant.
    (")-(")

  8. #8
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut
    merci quand meme

  9. #9
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Points : 2 284
    Points
    2 284
    Par défaut
    utilises les possibilités du DOS.

    Je croit que c'est
    Des liens utiles autrement :
    http://www.ss64.com/nt/index.html
    http://commandwindows.com/
    et aussi
    http://www.google.fr/search?q=window...and+line&hl=fr

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/01/2007, 00h48
  2. lancer une commande sans console?
    Par alain57 dans le forum C
    Réponses: 4
    Dernier message: 15/08/2006, 14h07
  3. [Système] Lancer un script sans attendre sa fin ?
    Par parisien dans le forum Langage
    Réponses: 9
    Dernier message: 03/11/2005, 22h09
  4. [Système] Lancer un executable sans attendre la fin
    Par raptor70 dans le forum Langage
    Réponses: 1
    Dernier message: 27/10/2005, 14h25
  5. [Dos] Lancer une commande dos sans attendre la fin
    Par MrEddy dans le forum Windows
    Réponses: 4
    Dernier message: 09/06/2005, 17h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo