我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

苏南大叔来水一篇文章,说的是phpsleep函数。在印象里面,这种sleep函数都是以毫秒为单位的。但是,这个php中的这个sleep函数,并不是这样的,它并不支持毫秒为单位。

苏南大叔:php中的sleep函数分析,sleep函数的单位是多少? - php-sleep-hero
php中的sleep函数分析,sleep函数的单位是多少?(图2-1)

本文测试环境:win10php@7.3.4

sleep的最小步长单位

phpsleep的单位居然是秒,而不是毫秒。js中没有单独的sleep函数,大家印象里面的sleep函数来自jssetTimeout函数,单位是毫秒。

如果你能接受在“php”中“sleep的最小单位是秒”的事实了。那么,下一步告诉你,最小单位是一秒,没有0.1秒的说法。步长也是一秒,就是说,只能有下面的结果:sleep一秒,sleep二秒,sleep三秒....

参数是可以随便传递的,0.11.52.9这些都是可以传递的。但是从执行结果上来看,参数都被intval()了,就是仅保留整数值,而忽略小数值。

苏南大叔:php中的sleep函数分析,sleep函数的单位是多少? - php-sleep-code
php中的sleep函数分析,sleep函数的单位是多少?(图2-2)

测试代码

这段代码中,可以看到sleep的参数,真实的执行情况。

function msec_time() {
    list( $t1, $t2 ) = explode( ' ', microtime() );
    return ( float )sprintf( '%.0f', ( floatval( $t1 ) + floatval( $t2 ) ) * 1000 );
}
$t1 = msec_time();
sleep( 1.6 );
$t2 = msec_time();
echo $t2-$t1;

在这个demo中,1.6秒的sleep()结果:居然是一秒!

相关链接

总结

php的某些函数,就是这么令人困惑不是?哈哈,更多硬核php函数,请点击:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   php