How to execue PHP scripts in the background using EXEC() and CMD

蓝咒 提交于 2019-12-23 03:20:18

问题


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:


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!