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 :

Fonction "system" et temps d'exécution


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2010
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Fonction "system" et temps d'exécution
    Bonjour à tous,

    j'espere poster dans la bonne section.

    voici mon problème :
    (config : xampp 1.7.3 windows xp)

    j'utilise la fonction system() de php pour lancer le programme imagemagick qui va créer des images que j'affiche ensuite.

    problème : l'utilisateur se débrouille (par un refresh ou pendant l'affichage de l'image) pour cliquer sur un autre bouton du menu, et là c'est le drame :
    apache plante car il attend la fin de l'exécution de la commande système (qui n'arrivera jamais), même pas au timeout de php.ini.

    résultat : il faut fermer le navigateur web puis quand on relance le menu avec imagemagick ne marche plus. (le reste marche à nouveau).

    j'ai bien lu ce maudit commentaire dans la doc php :

    Note: 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.
    mais comment l'interpréter ?

    ma ligne de commande ressemble à cela :

    system(convert -size 800x660 xc:none -draw "fill green circle 660,294 660,303 font-size 10 fill white text 655,298 '49'" image/123.png);

    mon programme est donc bien redirigé vers un fichier.

    ps : à noter que dans le gestionnaire des tâches, la commande cmd.exe reste présente --> elle correspond à la commande system().

    j'ai fait le test sous windows 2003, là c'est la commande convert.exe qui reste.

  2. #2
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    Salut,
    Il suffit de renvoyer la sortie vers un fichier tu as un exemple ici http://fr2.php.net/manual/fr/function.system.php#88543 ou par là http://fr2.php.net/manual/fr/function.system.php#59884

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2010
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    bonjour et merci pour votre réponse.

    j'avais déjà noté le post de la function runAsynchronously mais, je voulais pas me lancer là dedans, car il me faut tout de meme attendre la création de l'image pour continuer mon script...

    bref, je suis passé par un fichier temporaire batch avec les commandes convert dedans, puis je le lance avec exec(), car system() maffiche le contenu du batch à l'écran


    ça marche très bien maintenant, quand on coupe l'exécution du script en lançant un autre menu

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 28/04/2006, 17h36
  2. Réponses: 3
    Dernier message: 11/03/2006, 16h35

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