2013-07-12 71 views
0

所以我需要一點幫助,有沒有更好的方法讓PHP在執行下一行代碼之前等待?PHP睡眠但在睡眠前執行什麼

我想:

$response = $_POST[response]; 
echo "</br>".$response; 
if (strpos($response,'no') !== false) { 
    sleep(2); 
    echo "</br>"; 
    echo 'Why not?'; 
} 

但它睡覺之前調用此方法不顯示

echo "</br>".$response; 

。 它睡了2秒鐘,然後顯示響應。

我怎樣才能得到它呼應$迴應,然後等待2秒說:「爲什麼不」

預先感謝您。

+0

試試這個:http://php.net /manual/en/function.flush.php – alfasin

回答

1

你必須使用刷新緩衝區的內容看結果

@apache_setenv('no-gzip', 1); 
@ini_set('zlib.output_compression', 0); 
ob_start(); 
$response = $_POST[response]; 
echo "<br />".$response; 
ob_flush(); 
flush(); 
if (strpos($response,'no') !== false) { 
    sleep(2); 
    echo "<br />"; 
    echo 'Why not?'; 
} 

我同時使用ob_flush()flush()http://php.net/manual/en/function.flush.php說只是看看有什麼效果。有時只使用flush()也可以工作,具體取決於服務器配置。

請注意gzip/deflate。您不能縮小輸出流,並在輸出緩衝區的中間。您可以通過使用htaccess或使用代碼的第2行將其關閉

0

看起來輸出緩衝區在睡眠呼叫之前沒有被刷新。事實上,你可以手動控制這個作爲Pentium10指出:https://stackoverflow.com/a/3078873/1461223

+0

<?php ob_start(); echo'輸出一個'。 ob_flush(); usleep(1500000); echo'輸出兩個'。 ob_flush(); ?>這一次爲我輸出。 – user1789437