How to execue PHP scripts in the background using

2019-06-06 16:10发布

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 !

1条回答
老娘就宠你
2楼-- · 2019-06-06 16:42

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');
查看更多
登录 后发表回答