关于php调用可执行程序,在后台运行而不让页面等待

时间:2023-01-31 12:42:54

试过   exec($cmd,$out); popen($cmd,'r')等   运行的时候, 所在的php页面会一直等待调用程序完毕才刷新,

也试过 在 运行的 $cmd  后面加上 &  ,或者 前面加 nohup  都照样不行。 

后来发现  在 $cmd 后面 加上  /dev/null & ,才行。 

 

 

linux环境中

$cmd ='nohup '.$cmd.' >'.$buildLogs.' 2>&1 &';
system($cmd);

windows环境中:
$runCommand ='e:\php\php.exe '.__FILE__.' cmd '.$cmd;

$WshShell = new COM("WScript.Shell");
$WshShell->Run($runCommand, 7, false);


--------------
WshShell.Run (strCommand, [intWindowStyle], [blnWaitOnReturn])

参数
strCommand
在 strCommand 参数内部的环境变量被自动扩展。

intWindowStyle
这是为新进程在 STARTUPINFO 结构内设置的 wShowWindow 元素的值。其意义与 ShowWindow 中的 nCmdShow 参数相同,可取以下值之一。名称 值 含义
SW_HIDE
0 隐藏窗口并激活另一窗口。
SW_MINIMIZE
6 最小化指定窗口并激活按 Z 序排序的下一个顶层窗口。
SW_RESTORE
9 激活并显示窗口。若窗口是最小化或最大化,则恢复到原来的大小和位置。在还原应用程序的最小化窗口时,应指定该标志。
SW_SHOW
5 以当前大小和位置激活并显示窗口。
SW_SHOWMAXIMIZED
3 激活窗口并以最大化显示该窗口。
SW_SHOWMINIMIZED
2 激活窗口并以最小化显示该窗口。
SW_SHOWMINNOACTIVE
7 最小化显示窗口。活动窗口保持活动。
SW_SHOWNA
8 以当前状态显示窗口。活动窗口保持活动。
SW_SHOWNOACTIVATE
4 按窗口最近的大小和位置显示。活动窗口保持活动。
SW_SHOWNORMAL
1 激活并显示一个窗口。若窗口是最小化或最大化,则恢复到其原来的大小和位置。

blnWaitOnReturn
如果未指定 blnWaitOnReturn 或其值为 FALSE,则该方法立即返回到脚本继续执行而不等待进程结束。
若 blnWaitOnReturn 设为 TRUE,则 Run 方法返回由应用程序返回的任何错误代码。如果未指定 blnWaitOnReturn 或其值为 FALSE,则 Run 返回错误代码 0(zero)。

示例
' This fragment launches Notepad with the current executed script
Set WshShell = Wscript.CreateObject("Wscript.Shell")
WshShell.Run ("notepad " & Wscript.ScriptFullName)
WshShell.Run ("%windir%\notepad" & Wscript.ScriptFullName)