我有一个用 PHP 编写的应用程序(不是网站,一个应用程序),它的逻辑有一个无限循环,直到应用程序关闭。我注意到的一个问题是我的 CPU 使用率非常高(显然),我尝试使用我过去做过的 C++ 方法来降低 CPU 使用率。他们中的许多人似乎都没有工作。
我试过了:
sleep(1);
和:
time_sleep_until(microtime(true)+0.2);
但似乎两者都没有降低利用率。
有小费吗?
您可以在需要执行作业时配置它们的执行。因此,如果这个无限脚本需要每分钟执行/检查某事,您可以在有变化时执行,否则休眠。
您的问题可能出在脚本本身以外的其他事情上。这是一个示例,希望对您有所帮助。
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);
据我所知,没有办法在 PHP 应用程序中执行此操作,但是在启动该进程时,您可以将其传递给名为cpulimit
. 另一种选择是更改nice
程序的级别,以便至少在它很忙时不会阻碍其他更重要的进程。