在我的
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
}
问题是当我监视我的操作系统资源时(通过’top’命令),我看到的进程比我预期的要多得多.有什么想法吗?
最佳答案 我认为更好的方法是工作控制者或工作队伍……
但是,如果那对你来说不可能,因为你的东西是如此分开,你的方法看起来很糟糕.但是我可以从这里告诉你的ps命令应该总是只返回“php”maby它更好地检查执行文件或用户或什么?
你在谈论其他什么过程? php进程?它们看起来像什么,执行?你也可以看看这个链接http://www.php.net/manual/en/function.sem-get.php