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 :

PHP, exec et batch


Sujet :

Langage PHP

  1. #1
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut PHP, exec et batch
    Bonjour,

    je cherche à lancer un bat (je dév avec wamp sous windows pour le moment) me lançant un serveur de socket. J'ai 2 soucis :

    1) la syntaxe suivante me lance bien le serveur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    exec('C:/wamp/www/socket/serveur.bat');
    celle ci non :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    exec('http://localhost/socket/serveur.bat');
    Est-ce une config d'apache autorisant l'exécution des bat à mettre en place ?

    2) mon bat lance une classe PHP qui tourne indéfiniment (serveur de sockets). Existe t-il un moyen d'exec le bat puis de "retrouver la main" sur le script ?

    Merci

  2. #2
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Pour le 1) j'ai résolu en effectuant un dirname(__FILE__).
    pour le 2) le problème vient de là probablement :

    Si vous démarrez un programme en utilisant cette fonction et que vous voulez le laisser tourner en arrière plan, vous devez vous assurer que la sortie du programme est redirigée vers un fichier, ou un autre flux de sortie, sinon PHP attendra jusqu'à la fin de l'exécution du programme.
    EDIT: une commande comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    exec(dirname(__FILE__).'/serveur.bat > &1');
    exec(dirname(__FILE__).'/timeDispatcher.bat > &1');
    n'est plus bloquante mais ne lance pas apparemment mes classes PHP

  3. #3
    Membre expérimenté Avatar de sayari.dev
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2010
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2010
    Messages : 142
    Par défaut
    Sous windows, tu peux utiliser la classe COM


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $cmd = new COM("WScript.Shell");
    $cmd->Run('chemin_vers_fichier_batch.bat', 0, false);

  4. #4
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 38
    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
    Par défaut
    Hello

    1) Je ne suis pas sûr que exec sache se servir du wrapper http, si tu y arrives, fais-le moi savoir

    2) Tu peux également utiliser un fork (si tu as la pcntl): http://www.php.net/manual/en/function.pcntl-fork.php et comme ça plus besoin de bat.

  5. #5
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Nice ca marche nickel merci Sayari

    pour info lors d'un déploiement sur un serveur Linux, la syntaxe suivante marcherait ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    exec(dirname(__FILE__).'/serveur.sh  2>&1');
    merci encore

  6. #6
    Membre expérimenté Avatar de sayari.dev
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2010
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2010
    Messages : 142
    Par défaut
    C'est plutôt

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exec(dirname(__FILE__) . '/serveur.sh  2>&1 &');

  7. #7
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    @Benjamin : désolé j'ai pas testé ta solution vu que celle de Sayari a marché

    @Sayari : exact oui le & pour mettre en tâche de fond

    Un grand merci en tout cas, je vais pouvoir continuer mes tests sous windaube

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. php exec tar ne fonctionne pas
    Par snyfir dans le forum Linux
    Réponses: 12
    Dernier message: 20/11/2010, 22h38
  2. Problemes avec le php exec
    Par inkydjango dans le forum Langage
    Réponses: 2
    Dernier message: 17/09/2010, 17h03
  3. [Système] Commande wget via la fonction php exec()
    Par Sh4dow49 dans le forum Langage
    Réponses: 4
    Dernier message: 10/11/2008, 16h02
  4. script php exec sous linux help
    Par pretorien51 dans le forum Apache
    Réponses: 10
    Dernier message: 23/09/2008, 18h39
  5. Lancement d'un fichier php par un batch
    Par Amokrane dans le forum Langage
    Réponses: 3
    Dernier message: 05/08/2008, 19h45

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