PHP在Windows机器上; 在后台启动流程

Wil*_*m W 7 php windows background kill nohup

我正在寻找最好的,或任何方式真正从后台启动PHP的过程,所以我可以在以后的脚本中杀死它.

现在,我正在使用:shell_exec($ Command); 这个问题是它等待程序关闭.

当我执行shell命令时,我想要一些与nohup具有相同效果的东西.这将允许我在后台运行该过程,以便稍后在脚本中可以关闭它.我需要关闭它,因为此脚本将定期运行,并且程序运行时无法打开.

我曾想过生成一个.bat文件来在后台运行命令,但即便如此,我如何在以后杀死该进程?

我见过的linux代码是:

$PID = shell_exec("nohup $Command > /dev/null & echo $!");
// Later on to kill it
exec("kill -KILL $PID");
Run Code Online (Sandbox Code Playgroud)

编辑:结果我不需要杀死进程

Jel*_*mer 11

shell_exec('start /B "C:\Path\to\program.exe"');

这里的/B参数是关键.

我似乎无法找到我发现它的位置了.但这对我有用.

  • 为了完整起见,我在此处留下了有关 start 命令的文档的链接:https://technet.microsoft.com/en-us/library/cc770297(v=ws.11).aspx (2认同)

Ali*_*xel 5

这个函数会从PHP手册中获得帮助吗?

function runAsynchronously($path,$arguments) {
    $WshShell = new COM("WScript.Shell");
    $oShellLink = $WshShell->CreateShortcut("temp.lnk");
    $oShellLink->TargetPath = $path;
    $oShellLink->Arguments = $arguments;
    $oShellLink->WorkingDirectory = dirname($path);
    $oShellLink->WindowStyle = 1;
    $oShellLink->Save();
    $oExec = $WshShell->Run("temp.lnk", 7, false);
    unset($WshShell,$oShellLink,$oExec);
    unlink("temp.lnk");
}
Run Code Online (Sandbox Code Playgroud)