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 :

Exec : application qui ne rend pas la main


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2011
    Messages : 24
    Points : 18
    Points
    18
    Par défaut Exec : application qui ne rend pas la main
    Bonjour à tous,

    J'espère tout d'abord être dans la bonne section. Si ce n'est pas le cas, j'espère que vous me pardonnerez mon erreur !


    Voici mon souci :

    J'utilise la fonction exec tout simplement comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exec('monFichier.bat');
    monFichier.bat contient quant à lui, une commande qui lance un programme.

    Dans mon ancien environnement de travail (Windows vista), une fois que ce programme avait terminé son boulot, il rendait la main et la suite de mon script PHP s'exécutait.

    Lorsque j'ai voulu passer tout ça en test sur une machine Windows XP, le programme ne rend plus la main au script PHP.

    Quelques précisions :
    - Le programme a réalisé son travail, mais reste "bloqué" (obligé de tuer le processus via le gestionnaire des tâches);
    - Lorsque je lance monFichier.bat "à la main", aucun problème;
    - Je n'ai pas besoin de récupérer le résultat de la commande, mais j'ai besoin de savoir que le travail est terminé : j'ai donc BESOIN que mon script soit bloqué le temps de l'exécution dudit programme.


    Le problème est-il lié au programme/monFichier.bat, à la fonction exec, ou se situe-t-il au niveau de l'environnement?

    Merci de m'avoir lu,

    Romain

  2. #2
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Hello

    ça arrive que les scripts windows demandent à l'utilisateur une saisie pour se terminer et dans ce cas je ne vois pas bien comment il peut rendre la main à PHP.

    Si tu y arrives, la solution serait de refaire ce que fait ce .bat en PHP.

    Sinon, mais tu ne pourra pas savoir si l’exécution s'est terminée ni même si elle s'est correctement déroulée, tu peux utiliser popen qui rendra la main à PHP dans tous les cas (une sorte d’exécution asynchrone). Dans ce cas, une solution simple serait de modifier le .bat pour qu'il ajoute un fichier qui serait vérifié (puis supprimé) par PHP à intervalles réguliers (un jeton en somme).

  3. #3
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    en CLI ça marche ?

  4. #4
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2011
    Messages : 24
    Points : 18
    Points
    18
    Par défaut
    Bonjour à vous,

    Merci pour vos premières réponses.

    Citation Envoyé par Benjamin Delespierre Voir le message
    ça arrive que les scripts windows demandent à l'utilisateur une saisie pour se terminer et dans ce cas je ne vois pas bien comment il peut rendre la main à PHP.
    L'application appelée dans ce .bat prévoit ce cas de figure avec un paramètre optionnel. Je l'utilise correctement dans mon cas.

    Citation Envoyé par Benjamin Delespierre Voir le message
    Si tu y arrives, la solution serait de refaire ce que fait ce .bat en PHP.
    J'ai en effet essayé de me passer du fichier .bat et de lancer la commande directement dans le exec, mais ce n'est pas concluant.

    Citation Envoyé par Benjamin Delespierre Voir le message
    Sinon, mais tu ne pourra pas savoir si l’exécution s'est terminée ni même si elle s'est correctement déroulée, tu peux utiliser popen qui rendra la main à PHP dans tous les cas (une sorte d’exécution asynchrone). Dans ce cas, une solution simple serait de modifier le .bat pour qu'il ajoute un fichier qui serait vérifié (puis supprimé) par PHP à intervalles réguliers (un jeton en somme).
    J'aurais bien voulu me passer de cette méthode... Mais si je ne trouve pas rapidement une solution, je l'envisagerai sérieusement.


    Citation Envoyé par stealth35 Voir le message
    en CLI ça marche ?
    Que ce soit la commande ou le .bat, s'ils sont lancés manuellement en ligne de commande, aucun problème.



    Romain

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    je parle de ton PHP en CLI

  6. #6
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2011
    Messages : 24
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    je parle de ton PHP en CLI

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    php -r "exec(monfichier.bat);"
    Ceci est OK, l'application effectue son boulot et rend la main correctement...

    Qu'en conclure?

  7. #7
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par Wilburdiskedur Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    php -r "exec(monfichier.bat);"
    Ceci est OK, l'application effectue son boulot et rend la main correctement...

    Qu'en conclure?
    apache ne peut pas ouvrir n'importe quel process, essaye avec un proc_open au pire, mais sache que ça ne marche pas comme en CLI

  8. #8
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2011
    Messages : 24
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    apache ne peut pas ouvrir n'importe quel process, essaye avec un proc_open au pire, mais sache que ça ne marche pas comme en CLI
    Je peux en effet imaginer qu'il s'agit d'un problème de droit d'exécution. Néanmoins, je trouve bizarre que l'application appelée dans le .bat s'exécute normalement (les données que cette application est censée traiter sont bien traitées) jusqu'au moment où elle doit rendre la main.

    Je me renseigne et je teste avec proc_open, et je vous tiens au courant.

    Encore merci pour les pistes.

    Romain

Discussions similaires

  1. Requete qui ne rend pas la main sous TOAD
    Par Lolitaaa dans le forum Langage SQL
    Réponses: 3
    Dernier message: 05/07/2010, 13h24
  2. Fonction php qui ne rend pas la main dans le SHELL
    Par diabli73 dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 20/10/2008, 19h45
  3. Thread Python qui ne rend pas la main
    Par Dazdh dans le forum Général Python
    Réponses: 2
    Dernier message: 15/07/2008, 12h11
  4. [Batch] make qui ne rend pas la main au batch
    Par Pierre.g dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 09/07/2008, 19h04
  5. Script CMD qui ne rend pas la main
    Par ipeteivince dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 10/06/2005, 11h00

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