2014-10-31 57 views
1

我努力学习ob_startob_flush功能,我在互联网上找到这段代码差异()有什么睡眠()和usleep在此使用ob_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()之间有什么错误或不同吗?

+0

我试过你的代码,它的工作原理。它很好地以3000ms的间隔在屏幕上绘制数字0-999。 – davidkonrad 2014-10-31 11:09:18

+0

这个问题很重要。 OP知道差异,但他仍然希望使用'sleep()'分数(这不起作用)。只需使用'usleep()'。这就是它的目的。 – Alternatex 2014-10-31 11:15:41

+0

@davidkonrad和杰拉尔德施奈德是正确的,sleep()只接受整数 – user3783161 2014-10-31 15:24:38

回答

1

我想我已经找到了一个答案,你是无所适从:

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

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

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

+0

谢谢,现在我知道我为什么不能使用睡眠,非常感谢 – user3783161 2014-10-31 15:22:09

1

睡眠之间的差异是sleep延误对于给定的秒数和usleep时滞程序执行的微秒的给定数量的执行程序。

+1

我认为这是非常清楚的OP是意识到这一点。 – davidkonrad 2014-10-31 11:04:22

1

不能使用分数作为参数sleep()

sleep(0.03); 

这里将0.03被扔进一个整数

sleep(0); 

所以PHP将睡眠持续10秒。

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