usleep()php5使用40%的空闲CPU

时间:2010-03-25 12:06:16

标签: php cpu sleep idle-processing

大家好我有一个奇怪的问题,

我有一个在Centos 5.x上运行的cli php脚本,它使用usleep(somtimes 1sec,有时2秒,somtimes 100ms取决于它)如果需要一些等待,但我注意到它曾经在usleep()它似乎使用了大约40%的空闲CPU:

Cpu(s):  5.3%us, 21.3%sy,  0.0%ni, 57.2%id,  0.0%wa,  0.0%hi,  0.0%si, 16.1%st

任何想法?
欢呼声

2 个答案:

答案 0 :(得分:4)

对于我来说,使用非常简单的测试用例不会发生这种情况。在您的系统上尝试以下操作,看看是否仍然有足够的CPU时间。

脚本test.php:

<?php
for ($n=0;$n<1000;$n++)
{
  usleep(10);
}
?>

然后在命令行运行:time php test.php

我的结果如下:

[ar@arctic ~]$ cat /etc/redhat-release 
CentOS release 5.2 (Final)
[ar@arctic ~]$ time php test.php 

real    0m1.020s
user    0m0.013s
sys     0m0.006s

您可以看到,与实际(或已用)时间相比,用户和系统时间非常小。即CPU利用率非常低。

答案 1 :(得分:3)

在Windows系统下,如果未将脚本执行的时间限制设置为0(set_time_limit(0);),则在使用sleep或usleep函数时,php可执行文件将占用50%的CPU功率。