如何使用EXEC()和CMD在后台执行PHP脚本

我不能使用$com = new Com('WScript.shell'); 方式,这是我的系统上造成的问题。 也许我需要升级我的PHP,因为它很老(5.2),但我想我要做的不是版本依赖。

我在Windows 2008 64位上运行PHP。 在哪里我可以运行一个命令前缀start在单独的控制台上运行该命令。

 start php myscript.php 

如果这是从命令行执行的,它会为脚本启动一个新的控制台。

我只需要使用exec来从PHP 执行相同的操作。

 exec("CMD /C start php myscript.php"); 

/C是在脚本结束时终止CMD会话。

但它没有给出相同的结果,它仍然等待脚本终止!

这个工作:

 exec("start /B php myscript.php"); 

在myscript.php的开头也关闭所有的标准流:

 fclose(STDIN); fclose(STDOUT); fclose(STDERR); 

如果你想让echo仍然有效,你可以在关闭标准流之后打开一个文件写入标准输出:

 $STDIN = fopen('/dev/null', 'r'); $STDOUT = fopen('myscript.log', 'wb');