2011-08-07 108 views
0

我重寫Mark's answer用於Windows和到目前爲止,我想出了這一點:執行在PHP後臺進程在Windows

// Escape character for Windows is:^
$shellCmd = 'start /B cmd /c ' . escapeshellcmd($cmd) . ' ^>"'.$outputfile. '"'; 
// note that exec was like 40 times slower than popen & pclose 
pclose(popen($shellCmd, "r")); 

有在Windows tasklist命令,但我不知道怎麼找取出我的流程的PID。爲了準時,我正在尋找通過popen打開的進程的PID。

你能幫我嗎? 謝謝!

注意:我不確定這段代碼如何處理錯誤輸出,但在我的情況下並不重要。在這些功能

+0

我尋找通過popen打開的進程的PID。 –

+0

你應該添加,作爲你的問題的第一句:) – hakre

回答

2

http://php.net/manual/en/function.proc-open.php
http://php.net/manual/en/function.pcntl-fork.php
http://www.php.net/proc_get_status

讀討論,你可以在後臺處理更多的控制和檢索它們的PID

例子是這樣的:

$pcs = popen($shellCmd,"r"); 
$info = proc_get_status($pcs); 
$pid = $info['pid']; 
proc_close($pcs); 
+0

我已經閱讀http://www.php.net/manual/en/function.proc-open.php#90584但它不是一種便攜式解。 –

+1

http://www.php.net/proc_get_status - 這似乎是我一直在尋找! :) –

+0

是的,添加了代碼示例 –