PHP设置最大CPU利用率,或者,如何放弃CPU时间片

时间:2012-07-23 20:01:02

标签: php cpu-usage

我有一个用PHP编写的应用程序(不是网站,一个应用程序),它的逻辑有一个无限循环,直到应用程序关闭。我注意到的一个问题是我获得了令人难以置信的高CPU使用率(显然),并且我尝试使用过去曾做过的C ++方法来降低CPU使用率。他们中似乎没有多少人能够工作。

我试过了:

sleep(1);

time_sleep_until(microtime(true)+0.2);

但似乎都没有降低利用率。

任何提示?

2 个答案:

答案 0 :(得分:1)

您可以在需要执行作业时配置作业的执行。因此,如果这个无限的脚本需要每分钟做一次/检查一下,你可以在发生变化时进行,否则就会睡觉。

您的问题可能出现在您的脚本除此之外的其他事情上。这是一个希望它有帮助的例子。

    set_time_limit(0);
    ignore_user_abort(true);
    $minutes = NULL;

    do {
        try {
            // Run jobs, only when the minute has changed
            $now = getdate();
            if ($now['minutes'] != $minutes) {
                $minutes = $now['minutes'];
            }       
        }
        catch (Exception $e) {
            // Catch here and handle
        }
        sleep(10);
    } while (TRUE);

答案 1 :(得分:0)

据我所知,在PHP应用程序中无法执行此操作,但在启动该过程时,您可以将其传递给名为cpulimit的命令行实用程序。另一种选择是更改程序的nice级别,这样至少在忙碌时它不会阻止其他更重要的进程。