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é.
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éPHP Fatal error: Maximum execution time of 30 seconds exceeded in C:\WWW\lc.workspace.com\site\index.php on line 44
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part ini_set("max_execution_time", "240");
J'ai essayé les commandes exec(), shell_exec(), popen()/pclose(), toutes sans succès, voici quelques exemples que j'ai essayé:
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.
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);
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.
Partager