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 :

[Système] exec()


Sujet :

Langage PHP

  1. #1
    Membre confirmé Avatar de dj-julio
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 745
    Points : 625
    Points
    625
    Par défaut [Système] exec()
    Bonjour,

    j'utilise la fonction exec() pour lancer un script sur le serveur qui héberge le php.
    Le problème c'est que le php attend que le script soit terminé pour continuer de s'exécuter.

    y a t-il un moyen pour dire au PHP de continuer une fois le script lancé ?

  2. #2
    Membre confirmé Avatar de papyphp
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    438
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 438
    Points : 587
    Points
    587
    Par défaut
    Salut,
    En droite ligne de la doc de php

    Note : Si vous démarrez un programme en utilisant cette fonction, et que vous voulez qu'il continue de fonctionner en tâche de fond, vous devez vous assurez que le résultat de ce programme est redirigé vers un fichier ou une autre méthode d'archivage, car sinon, PHP va attendre la fin de l'exécution du programme.

  3. #3
    Membre confirmé Avatar de dj-julio
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 745
    Points : 625
    Points
    625
    Par défaut
    merci gilmaire

    donc en utilisant system() ça devrait être bon non ?
    il n'attend pas le résultat?

  4. #4
    Membre confirmé Avatar de papyphp
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    438
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 438
    Points : 587
    Points
    587
    Par défaut
    Non, system() attend la fin du programme externe puis rend la main à php

    Tu peux utiliser exec() mais en redirigeant la sortie vers un fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exec("mon_programme.exe > mes_resultats.txt");

  5. #5
    Membre confirmé Avatar de dj-julio
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 745
    Points : 625
    Points
    625
    Par défaut
    et ce fichier texte va servir à quoi ? j'ai pas trop compris ça :/

  6. #6
    Membre confirmé Avatar de papyphp
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    438
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 438
    Points : 587
    Points
    587
    Par défaut
    A recevoir le résultat de ton programme.
    Mais surtout à permettre à php de reprendre la main sans attendre que le programme externe soit terminé.

    Tu évites ainsi le problème tu timeout.

    Ceci n'est valable que si les données résultantes de ton programme externe ne sont pas nécessaires pour pouvoir exécuter le reste du programme php.

  7. #7
    Membre confirmé Avatar de dj-julio
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 745
    Points : 625
    Points
    625
    Par défaut
    humm oki merci,
    mais j'ai un ti souci :
    Fatal error: Only variables can be passed by reference in c:\easyphp\www\reprographie\pdf-scriptUpload.php on line 137
    et voila le code qu'il exécute :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $cmd="C:\EasyPhp\www\\reprographie\PSEXEC\psexec.exe \\\\170.29.249.205 -d -u Administrateur -p compaq D:\WScript D:\ConvertToPDF-PPT.vbs ".$nom_doc." ".$nom_doc_pdf." ".$nom_demandeur;
    exec($cmd, cmd.txt.php);
    La syntaxe que j'utilise est bonne ?

  8. #8
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    Pendant que je l'ai dans mon tampon, je te donne le lien aussi :
    http://frederic.bouchery.free.fr/?2004/07/15/2-Les-Chaines-De-Caracteres-Soyons-Coherents

    Pourquoi as-tu deux paramètres dans ton exec ?
    Si c'est pour récupérer la sortie de ton programme, alors tu ne peux pas lui demander de s'exécuter tout seul (cf. la mise en garde de gilmaire).

  9. #9
    Membre confirmé Avatar de dj-julio
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 745
    Points : 625
    Points
    625
    Par défaut
    bah je ne sais pas qu'elle est la syntaxe pour dire que le résultat sera envoyé vers le fichier désiré.
    Je n'ai pas besoin de me sérvir du résultat du exec, je veux juste qu'il exécute la commande que je lui donne et qu'il redonne la main au PHP.

    j'ai vu sur php.net :
    string exec ( string command [, array &output [, int &return_var]] )
    je ne sais pas comment faire pour que :
    exec($cmd ... puis envoi du résultat vers le fichier cmd.txt.php)

    merci d'avance

  10. #10
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Euh, sans tester :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $cmd="C:\EasyPhp\www\\reprographie\PSEXEC\psexec.exe \\\\170.29.249.205 -d -u Administrateur -p compaq D:\WScript D:\ConvertToPDF-PPT.vbs ".$nom_doc." ".$nom_doc_pdf." ".$nom_demandeur.' > fichier.txt';
    exec($cmd);
    Si tu donnes un paramètre après $cmd, ce doit être un tableau et il récupèrera tout ce qui est affiché par ton programme exécuté.

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

Discussions similaires

  1. [Système] Exec pour script shell
    Par Tempotpo dans le forum Langage
    Réponses: 9
    Dernier message: 31/08/2006, 14h08
  2. [Système] exec() : lancer un batch ?
    Par Commodore dans le forum Langage
    Réponses: 2
    Dernier message: 13/07/2006, 08h50
  3. [Système] Exec contrariant
    Par chtichokoko dans le forum Langage
    Réponses: 7
    Dernier message: 27/04/2006, 10h40
  4. Réponses: 2
    Dernier message: 31/03/2006, 11h50
  5. [Système] exec et su
    Par anzar dans le forum Langage
    Réponses: 6
    Dernier message: 29/10/2005, 18h30

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