PHP - 毫秒级的sleep()函数

42
PHP提供以毫秒为单位睡眠的函数吗? 现在,我正在使用类似于此的东西作为解决方法。
$ms = 10000;
$seconds = round($ms / 1000, 2);
sleep($seconds);

我想知道在PHP中是否有更通用的函数可以做到这一点,或者处理这个问题的更好方法。


为什么要四舍五入?不,没有接受毫秒的过载。直接除以1000就足够简单明了。 - NPras
time_nanosleep()time_sleep_until()是其他的睡眠函数,但我不认为它们是可行的替代方案。 - Scuzzy
你可以使用system或exec来执行外部程序。这将允许您使用Linux(不确定Windows的等效物)中的sleep(如果已加载),从而允许小数。我经常使用这种方法来减缓对API的请求,以便每秒钟可以超过1个请求。 system('sleep .1'); - DDS
1个回答

94

这是您唯一的实用选择:usleep - 以微秒级延迟执行

所以要睡眠两毫秒:

usleep( 2 * 1000 );

睡眠一四分之一秒:

usleep( 250000 );
请注意,sleep() 函数接受整数参数,输入 sleep(0.25) 会被视为 sleep(0),也就是会立即返回。
$i = 0;
while( $i < 5000 )
{
  sleep(0.25);
  echo '.';
  $i++;
}
echo 'done';

我猜没有函数接受毫秒作为参数? - Navaneeth Mohan
为了让程序延迟执行一小段时间,可以使用usleep()函数,因为sleep()函数需要一个整型参数。例如,sleep(0.25)将不会暂停程序的执行。 - Raskul
所以,如果我需要确切地暂停1.5秒,我必须写成sleep(1); usleep(500000);这样吗?这真是糟糕透了。 - undefined
@Moongazer 我会写usleep(1500000),或者尝试找出一个更好的方法,不需要睡眠。 - undefined
1
@Scuzzy 是的,我本来想这样做的,直到我在 PHP 文档中看到了这个提示:"注意:大于 1000000 的值(即休眠超过一秒)可能不被操作系统支持。请使用 sleep() 替代。" - undefined
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接