- sleep ( int $seconds ) : 程序延迟执行指定的 seconds 的秒数。
- usleep ( int $micro_seconds ) : 以指定的微秒数(一微秒等于一百万分之一秒)延缓程序的执行。
php代码的执行是单线程的,php使用php-fpm(Fastcgi 进程管理器) 负责进程的分配和管理,如果php-fpm进程数量达到了配置的最大值pm.max_children ,剩下的请求只能排队,sleep() 函数将很容易阻塞住一个进程,甚至很容易把整个网站的请求被阻塞住。
<?php
// Current time
echo date('h:i:s') . "\n";
$second = 1000000;
usleep(mt_rand(1, 5) * $second);
// back!
echo date('h:i:s') . "\n";
$t1 = microtime(true);
usleep(500000); //以微秒为单为, 500000微妙等于500毫秒
$t2 = microtime(true);
echo ($t2 - $t1) * 1000 . 'ms';
?>
usleep函数注意事项
在使用usleep函数时需要注意以下几点:
- 1、在Windows操作系统下,usleep函数不可用。
- 2、usleep函数会让当前线程睡眠指定的时间,因此如果在使用usleep函数期间有其他事件发生,比如信号处理等,就有可能导致线程的意外中断。
- 3、usleep函数可能会对系统的调度器产生较大的影响,这个暂停的时候不可能是百分百的准确,跟系统的调度、CPU时钟周期等等有一定关系。因此在某些情况下,建议使用定时器或者其它更可靠的处理方式。