I can't use the $com = new Com('WScript.shell');
way, it's causing problems on my system. Probably I need to upgrade my PHP because it's very old (5.2), but I suppose what I'm trying to do is not version dependent.
I'm running PHP on Windows 2008 64-bit. Where I can run a command prefixed with start
to run the command on a separate console.
start php myscript.php
If this is executed from the command line, it starts a new console for the script.
I need to do the same from PHP using exec only.
exec("CMD /C start php myscript.php");
/C
is to terminate the CMD session when the script finishes.
But it's not giving the same results, it still waits for the script to terminate !
This shoul work:
exec("start /B php myscript.php");
Also close all standard streams at the very beginning of myscript.php:
fclose(STDIN);
fclose(STDOUT);
fclose(STDERR);
If you want echo
to still work, you can open a file for writing to stdout after closing the standard streams:
$STDIN = fopen('/dev/null', 'r');
$STDOUT = fopen('myscript.log', 'wb');
来源:https://stackoverflow.com/questions/18575794/how-to-execue-php-scripts-in-the-background-using-exec-and-cmd