在这个ob_flush示例中,sleep()和usleep()之间有什么区别

时间:2014-10-31 10:58:33

标签: php

我正在尝试学习ob_startob_flush功能,我在互联网上找到了此代码

if (ob_get_level() == 0) ob_start();
for($i=0;$i<1000;$i++)
{
    echo "$i<br />";

    ob_flush();
    flush();
    usleep(30000);
        // sleep(0.03);
}

我正在尝试更改使用微秒睡眠(秒)的usleep()函数,但它不能用作usleep()

sleep()usleep()之间是否存在错误或区别?

3 个答案:

答案 0 :(得分:1)

sleep之间的差异为sleep延迟程序执行的给定秒数,usleep延迟程序执行给定的微秒数。

答案 1 :(得分:1)

您不能将分数用作sleep()

的参数
sleep(0.03);

这里0.03将被转换为整数

sleep(0);

所以PHP会睡0秒。

如果你想睡几分钟,你必须使用usleep()time_nanosleep()

答案 2 :(得分:1)

我想我已经找到了你感到困惑的答案:

sleep(0.03)不起作用,因为它需要一个整数。 sleep(0.03)被解释为sleep(0)

这就是为什么还有函数usleep()以毫秒为单位提供sleep(),例如usleep(3000)。为什么还有第三个睡眠功能,time_nanosleep()提供秒和纳秒的混合,甚至更高的分辨率。

我猜三个不同的函数是如何构建函数的结果 - 要求整数 - 并且因为最大整数的值是平台相关的。在32位中,最高整数是2147483647.在64位中,最高整数是9223372036854775807.