2009-07-15 34 views
2

我正在編寫一個腳本來構建其他腳本的隊列,並且應該管理它們的啓動。管理器腳本應該知道哪個子進程已經完成,因此它可以啓動在隊列中等待的其他腳本。如何找到一個特定的進程仍在PHP中運行

我加了一個「& echo $!」獲取每個子進程的進程ID。所以我有我的子進程進程ID,現在我正在使用系統「ps」程序調用來查找子進程是否仍在運行。

事情是,我的腳本目前只能在類Unix系統中運行。我不知道如何在窗口中獲取我孩子的PID,而且我的腳本不會在windows中解析「tasklist」命令的輸出。

有沒有其他辦法可以達到這個目的?任何in-PHP解決方案來查找子進程是否仍在運行?一個解決方案來啓動其他進程(非阻塞),並檢查它們是否仍在運行。

+0

您使用的是過程控制API嗎? [http://us3.php.net/manual/en/book.pcntl.php] – 2009-07-15 05:48:50

回答

0

你可以做的是創建一個數據庫或文件來保存你的進程標識符。每個進程都會將他的PID(進程ID)寫入文件或DB中。 使用此方法獲得你的php PID:

getmypid(); 

你的監督過程中會檢查每一個現在,然後如果進程ID仍然運行以下:

function is_process_running($PID) { 
    exec("ps $PID", $ProcessState); 
    return(count($ProcessState) >= 2); 
} 

當過程已停止,您可以執行下一道工序

和使用Windows的檢查手冊中的註釋:http://no2.php.net/manual/en/book.exec.php#87943

0

你試過proc_get_status()?在這種情況下,你可能想使用proc_open()產生你的子進程。我不知道這是你想要的。

相關問題