Bonjour,
Tout d'abord, voici mon environnement :
Windows Server 2003
IIS
PHP 4
Je sais, c'est pas dans les moeurs mais parfois, nous sommes contraint ...
Je possède une interface écrite en PHP, qui lors du POST du formulaire, lance un script PHP en arrière plan de cette manière :
$WshShell = new COM("WScript.Shell");
$oExec = $WshShell->Run($cmd, 0, false);
Ma variable $cmd effectue le lancement d'un script PHP, que l'on appelera numéro 1 via le PHP CLI.
Seulement, le problème n'apparait pas à ce niveau.
Lors du lancement du script numéro 1, j'ai bien un process PHP correspondant qui existe et qui est bien lancé. Ce script a pour rôle de lancer lui aussi (oui, la structure est complexe) trois autres scripts. Seulement, il n'a pas le temps de les lancer.
La ligne de commande suivante qui est pourtant identique à la ligne déclanchée par le POST du formulaire plante :
$WshShell = new COM("WScript.Shell");
Mon fichier error.log me dit ceci :
PHP Warning: (null)(): Invalid ProgID, GUID string, or Moniker: Invalid syntax
Les lignes suivantes n'ont même pas eu le temps de s'éxécuter. C'est comme si le CLI avait figé :
$WshShell->Run( $cmd2, 0, true );
$WshShell->Run( $cmd3, 0, true );
$WshShell->Run( $cmd4, 0, true );
Cette structure a été établi afin que le navigateur, lors du lancement du premier script, ne fige pas et que ce premier script lance 3 autres scripts qui devront s'exécuter de manière asynchrone, les uns après les autres.
Je suis un peu perplexe devant le problème.
Si quelqu'un a des conseils (autre que changer de PHP, de serveur Web ou de système d'exploitation) concernant la structuration de l'enchainement du lancement des scripts ou bien même pour débugger ce qui occasione le Warning PHP qui fige tout, je vous serai très reconnaissant.
J'ai vu sur quelques sites qu'il y aurait peut-être une histoire de clé dans la base de registre, mais bon, pas plus que ça. En tout cas les PHP.ini qui sont utilisés sont bien tous les mêmes du début jusqu'à la fin, ça n'a pas l'air d'être une histoire de config ... peut-être de tuning.
Je vous laisse, messieurs les experts.
Merci d'avance !
Laurent
Partager