1

我有一个用 PHP 编写的应用程序(不是网站,一个应用程序),它的逻辑有一个无限循环,直到应用程序关闭。我注意到的一个问题是我的 CPU 使用率非常高(显然),我尝试使用我过去做过的 C++ 方法来降低 CPU 使用率。他们中的许多人似乎都没有工作。

我试过了:

sleep(1);

和:

time_sleep_until(microtime(true)+0.2);

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

有小费吗?

4

2 回答 2

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);
于 2012-07-23T20:14:46.853 回答
0

据我所知,没有办法在 PHP 应用程序中执行此操作,但是在启动该进程时,您可以将其传递给名为cpulimit. 另一种选择是更改nice程序的级别,以便至少在它很忙时不会阻碍其他更重要的进程。

于 2012-07-23T20:05:37.653 回答