更新這是一個問題,我有:PHP的循環不要在瀏覽器
如何更新瀏覽器的頁面(瀏覽器,Firefox)時,迴路的負載,例如:
<?php
$var = 0;
while($var != 10){
echo $var;
$var++;
sleep(1);
}
?>
頁不要更新,只有在PHP腳本執行完成後,任何東西都可以幫助我?謝謝。
更新這是一個問題,我有:PHP的循環不要在瀏覽器
如何更新瀏覽器的頁面(瀏覽器,Firefox)時,迴路的負載,例如:
<?php
$var = 0;
while($var != 10){
echo $var;
$var++;
sleep(1);
}
?>
頁不要更新,只有在PHP腳本執行完成後,任何東西都可以幫助我?謝謝。
你可以這樣說:
<?php
if (ob_get_level() == 0) ob_start();
for ($var = 0; $var <= 10; $var++) {
echo $var;
ob_flush();
flush(); // echo output buffer to client
sleep(1);
}
ob_end_flush();
?>
爲了使這項工作,你應該有一個像這樣在PHP設置中禁用輸出壓縮:
zlib.output_compression = Off
或嘗試在代碼中禁用它(如果允許):
if(ini_get('zlib.output_compression'))
ini_set('zlib.output_compression', 'Off');
這基本上是不可能的。
PHP在其引擎中使用自己的輸出緩衝(php://output
)。該緩衝區會填充您在代碼中回顯的數據。一旦引擎到達腳本末尾,它將刷新整個緩衝區並將其附加到網絡服務器開始創建的頭信息(想象一下,網絡服務器是預先準備好對瀏覽器和PHP的響應的網頁服務器是添加實際內容的人)。
另一個限制是某些瀏覽器等到整個HTTP請求完成後纔開始渲染站點。並非所有這些,但一些。
對於真實的活動,我會推薦AJAX或更現代的WebSockets。第二個更生動,因爲它不會像AJAX一樣重新加載。我建議你重新考慮你想要做什麼,如果它是必要的。
一些維基百科文章,我建議你看看,如果你不明白什麼:
PHP的服務器上運行 - 如果你需要在瀏覽器窗口中「實時」的東西,你需要使用瀏覽器中運行的東西(例如Javascript)。 – Floris
爲什麼你會在那裏使用'sleep()'? – randak
@randak也許只是爲了好玩..我也這樣做過..就像測試longpolling .. – Hardy