我有一个用PHP编写的应用程序(不是网站,一个应用程序),它的逻辑有一个无限循环,直到应用程序关闭。我注意到的一个问题是我获得了令人难以置信的高CPU使用率(显然),并且我尝试使用过去曾做过的C ++方法来降低CPU使用率。他们中似乎没有多少人能够工作。
我试过了:
sleep(1);
和
time_sleep_until(microtime(true)+0.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
级别,这样至少在忙碌时它不会阻止其他更重要的进程。