php – 如何限制进程数?

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

点赞