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] Exécution d'une application en passant par PHP [PHP 5.2]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2003
    Messages : 142
    Par défaut [Système] Exécution d'une application en passant par PHP
    Environnement:
    Windows XP Pro
    Service Pack 3 / .Net 3.5
    Apache 2.2.11
    PHP 5.2.9-2

    Bonjour à tous.

    Dans un projet de site web, je dois convertir des formules mathématiques en image .png avec LaTeX en passant par PHP. Le problème que j'ai, est quand j'appel LaTeX, le programme prend une éternité à s'exécuter et PHP "plante" après que le timeout soit dépassé.
    PHP Fatal error: Maximum execution time of 30 seconds exceeded in C:\WWW\lc.workspace.com\site\index.php on line 44
    Et ce, même si tout s'est bien passé avec latex.exe sans erreur. Pourtant, en ligne de commande ce processus prend une fraction de seconde à s'éxécuter sans erreurs. Comme mentionné dans d'autres post sur le forum, j'ai ajouté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ini_set("max_execution_time", "240");
    au début de mon code PHP ce qui "règle" le problème du plantage, mais le processus latex.exe prend quand même 2 minutes 47 secondes à s'éxécuter. Ce qui est beaucoup trop long puisque latex.exe peut être exécuter plusieurs fois dans une même page pour générer différentes formules mathématiques.
    J'ai essayé les commandes exec(), shell_exec(), popen()/pclose(), toutes sans succès, voici quelques exemples que j'ai essayé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    exec($commande);
    exec($commande . " >NUL");
    exec("start /B " . $commande);
    shell_exec($commande);
    pclose(popen("start ". $commande, "r"));
     
    $output = array();
    $result = null;
    $return = exec($command, $output, $result);
    ou
    exec('start /B "'.$commande.'"', $output, $return);
    ainsi que plein d'autres variantes que je ne me souviens plus. Aucune ne fonctionne, latex.exe prend toujours environ 2 min 40 sec à s'éxcuter en passant par PHP.

    Une fois le problème du timeout réglé, je n'ai plus aucun message d'erreur dans les logs de Apache.

    Dans php.ini, safe_mode est à off et disable_functions est à Off comme suggéré ailleurs.

    Je ne sais plus où me diriger, quelqu'un a une autre idée dans quelle autre direction je pourrais chercher?

    Merci de votre aide.

    Sébastien.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Par défaut
    Si le processus prend une fraction de second en ligne de commande. Il ne devrait gere excéder quelques seconds en PHP. Je ne pense pas que le probleme vienne de ton script.

    Essaye de voir les permissions, essaye par exemple de créer un fichier dans le dossier ou tu dois créer ton rapport.

    Essaye d'executer une commande simple comme DIR, COPY...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2003
    Messages : 142
    Par défaut
    Citation Envoyé par batataw Voir le message
    Si le processus prend une fraction de second en ligne de commande. Il ne devrait gere excéder quelques seconds en PHP. Je ne pense pas que le probleme vienne de ton script.

    Essaye de voir les permissions, essaye par exemple de créer un fichier dans le dossier ou tu dois créer ton rapport.

    Essaye d'executer une commande simple comme DIR, COPY...
    Ok, testé, voici ce que j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    chdir($path);
    // dossier courant
    echo getcwd() . "<br/>";
     
    $output = array();
    $result = null;
    $command = "dir *.*";
    exec($command, $output, $result);
    Et voici le résultat contenu dans $output.
    output:
    Array
    (
    [0] => Volume in drive C has no label.
    [1] => Volume Serial Number is 500A-2149
    [2] =>
    [3] => Directory of C:\WWW\lc.workspace.com\site\tmp
    [4] =>
    [5] => 2009-06-09 10.48 <DIR> .
    [6] => 2009-06-09 10.48 <DIR> ..
    [7] => 2009-06-08 12.23 215 2f7eaf16eceec07fc19c93090e90033a.tex
    [8] => 2009-06-09 11.23 9 c0ec8631c0327e613311aa7f4a48e553.aux
    [9] => 2009-06-09 11.23 564 c0ec8631c0327e613311aa7f4a48e553.dvi
    [10] => 2009-06-09 11.23 7ÿ043 c0ec8631c0327e613311aa7f4a48e553.log
    [11] => 2009-06-09 09.32 215 c0ec8631c0327e613311aa7f4a48e553.tex
    [12] => 5 File(s) 8ÿ046 bytes
    [13] => 2 Dir(s) 66ÿ263ÿ986ÿ176 bytes free
    )
    Le tout ayant pris une fraction de seconde.

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Par défaut
    Essaye d'utiliser la commande COPY.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2003
    Messages : 142
    Par défaut
    Citation Envoyé par batataw Voir le message
    Essaye d'utiliser la commande COPY.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $command = "copy 2f7eaf16eceec07fc19c93090e90033a.tex 2f7__.bkp";
    exec($command, $output, $result);
    Résultat:
    output:
    Array
    (
    [0] => 1 file(s) copied.
    )
    Exécution: Fraction de sec.
    Fichier bel et bien créé.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2003
    Messages : 142
    Par défaut
    Par rapport aux permissions, j'ai remarqué que mes dossiers à la racine de mon répertoire web qui contient tous mes sites sont tous en lecture seule (crochet grisé dans les propriétés du dossier) et je ne peux pas le changer... quand je le change, je refais "propriété" sur le dossier et tous est revenu comme avant... serait-ce une piste? Qu'est-ce qui remet en lecture seule sans que je le sache?

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 19/07/2006, 21h54
  2. Exécution d'une application dans un formulaire
    Par julio02200 dans le forum Access
    Réponses: 1
    Dernier message: 13/06/2006, 14h37
  3. Comment faire un exécutable d'une application access
    Par b_steph_2 dans le forum Runtime
    Réponses: 4
    Dernier message: 09/02/2006, 16h21
  4. [Système] lancer / kill une application sous linux
    Par Antoine NSG dans le forum Langage
    Réponses: 1
    Dernier message: 31/10/2005, 16h06
  5. [Système][Runtime]lancer une application externe
    Par mencaglia dans le forum API standards et tierces
    Réponses: 14
    Dernier message: 22/09/2005, 17h27

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