在我的PHP Web應用程序中,我試圖限制運行的CPU /內存密集型進程的數量(例如,ImageMagick的'convert'命令)。我有許多執行各種腳本的crons作業,這些腳本可能會執行這些CPU /內存密集型進程的太多實例。如何限制進程數量?
在我試圖限制這些進程時,首先檢查我的系統是否已經運行了一定數量的進程。功能:
function has_reached_process_limit($process, $limit)
{
$command = 'ps -eo comm | grep ' . $process;
exec($command, $output, $return);
if (count($output) > $limit)
{
return TRUE;
}
else
{
return FALSE;
}
}
所以,我跑是這樣的:
while (has_reached_process_limit('convert', 5) === TRUE)
{
// loop over
}
的問題是,當我監視我的OS的資源(通過‘頂’命令),我看到很多更進程比我預期的要多。任何想法爲什麼?
什麼是這些很多更多的過程,你指的是?例子? – codaddict 2010-09-24 12:07:05
我認爲這是因爲'ps'也顯示線程和叉子。因此,如果其中一個imagemagick進程使用3個線程,它將顯示3次。這可能是問題所在,但我不確定你會如何解決它。說實話,請回答下面的答案,並有一個工作隊列。 – ryeguy 2010-09-24 19:05:28