J'écris un couple de scripts PHP pour exécuter un programme, capturer c'est STDOUT et capturer le code retour quand il se termine. Ces programmes pourraient revenir instantanément, ou finir dans 20 minutes, donc je dois surveiller quand ils finissent.Exécuter le programme en arrière-plan, ET capturer le code retour (php & windows)
Je n'arrive pas à démarrer un programme en arrière-plan et à capturer le code retour [dans un fichier journal externe]. Si j'utilise simplement exec, ou proc_open, mon script PHP bloquera, ce qui n'est pas bon quand le processus prend 20 minutes.
Même si je ne peux pas capturer le code de retour, j'ai besoin de savoir quand le processus est terminé. (Je peux mettre les codes d'erreur dans le STDOUT à la place)
je peux utiliser exec("start my.exe");
et attraper le STDOUT, mais je ne peux pas
le code de retour (et pas savoir quand il est fini) J'ai pensé de le faire via un fichier batch exec(start my.bat);
et dans le fichier de commandes attraper le code de retour, mais ma ligne de commande a des options dynamiques, donc je ferais tout à fait quelque chose comme;
exec("start cmd \"echo hello\");
Edit: Mais je ne l'ai pas trouvé un moyen de rendre dynamiquement une liste-commande de lot sur la ligne de commande. Si quelqu'un connaît une approche, je serais très reconnaissant.
cmd /C "echo hello"
est la solution à ce
N'a pas besoin d'être multiplateforme, strictement Windows (XP-7)
Que voulez-vous faire avec le code de retour? L'afficher sur un site Web? –
Oui, j'utilise le code de retour pour déterminer l'erreur et la prochaine étape. Mais cela sert aussi à me dire que le processus est terminé. –