在我的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