2012-05-22 57 views
1

我只是想打印一個從1到10的計數,每個整數之間間隔10秒。定時循環在php

例如。

$i=10; //Time delay  
for($j=1;$j<11;$j++) 
{ 
    echo $j; 
    //do something to delay the execution by $i seconds 
} 

我已經試過各種including flush()ob_flush()ob_implicit_flush()但直到執行整個過程中我得到的是一個屏幕凍結。

+1

爲什麼不這樣做的JavaScript/jQuery的? –

+0

你能否提供一個集成在php中的javascript? – mastero

回答

4

你想要什麼是比PHP更多的JavaScript相關。由於PHP是服務器端,它並不是爲執行這些操作而設計的。你可以讓它工作,但它不會很漂亮。

在我的邏輯中;從1到10計數應該不涉及服務器。您可以直接在瀏覽器中執行此操作,因此使用JavaScript。

8

http://php.net/manual/en/function.sleep.php

睡眠功能會打斷你的腳本的執行。

但是你有沒有考慮過使用JavaScript來做這樣的事情?您的腳本可能會達到最大執行時間,並且會佔用服務器上的資源。改用客戶資源!

+0

謝謝你的回答,但你可以舉一個例子,在php中使用這個功能。 – mastero

+0

'setTimeout()'是你想要看的東西,以及更新DOM的一些方法:例如'getElementById('myid')。innerHTML('foo')' – Tim

0

是的,使用Javascript是不可能的,因爲使用HTTP來完成這項任務是因爲輸出緩衝。

0

你想在你的php腳本運行時打印倒計時? 如果是的話,嘗試非推薦的片段:

ob_start(); 
for($i=0;$i<10;$i++) { 
    echo str_repeat(" ",10000); 
    echo 'printing...<br />'; 
    ob_flush(); 
    flush(); 
    sleep(1); 
} 

你看,怪行:

echo str_repeat(" ",10000); 

看來,瀏覽器需要決定真正刷新你的數據之前,一些「數據」。 使用JavaScript實時計數器。

+0

did not幫助....你能指定「一些」數據嗎? – mastero

+0

對我來說是一個謎,但似乎一些瀏覽器「需要」呈現特定數量的數據(未知),以便能夠模擬寫入到前緩衝區(只是開個玩笑)。檢查也[這裏](http://stackoverflow.com/questions/3445222/php-output-with-sleep)。 – 2012-05-25 16:11:12