php图书信息浏览器,使PHP即时输出结果到浏览器
for ( $i = 0 ; $i < 10 ; $i++ ) {
echo $i ;
sleep(1);
}
類似上面的程序如果在PHP解釋器中執行,每秒會輸出一個數,和想象中一樣。但是如果使用瀏覽器來訪問,情況就有所不同。在瀏覽器中訪問時,只有在十秒之后才會一次性地顯示所有結果。
可以使用ob_flush() 和flush() 來強制瀏覽器刷新緩存,程序改為:
PHP:
ob_start();
for ( $i = 0 ; $i < 10 ; $i ++ ) {
echo $i;
ob_flush();
flush();
sleep(1);
}
ob_end_clean();
再使用瀏覽器訪問,四個瀏覽器中只有Firefox 即時輸出了結果。這是因為不同的瀏覽器對緩沖的處理方式不同,Firefox在被要求強制刷新緩存時很聽話,而IE需要在接收到256個字節后才會將內容即時展現在界面上,Safari 需要1024個字節,Opera 更有個性,只有在遇到HTML標簽的時候才會即時輸出(Safari也是如此)。
對于IE和Safari,可以在輸出結果之前先輸出大于限定數目的空白字符:
PHP:
ob_start();
echo str_repeat (" ",1024);
for ( $i = 0 ; $i < 10 ; $i ++ ) {
echo $i ;
ob_flush();
flush();
sleep(1);
}
ob_end_clean();
而對于Opera、Safari遇到HTML標簽后才會即時輸出的問題,由于一般我們不會只往瀏覽器中輸出純文本內容,故可以不作考慮。對于上面的程序,可以在輸出結果中加入HTML標簽來達到目的:
PHP:
ob_start();
echo str_repeat(" " ,1024) ;
for ( $i = 0 ; $i < 10 ; $i ++ ) {
echo $i . "
" ;
ob_flush();
flush();
sleep(1);
}
ob_end_clean();
總結
以上是生活随笔為你收集整理的php图书信息浏览器,使PHP即时输出结果到浏览器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php fstat,PHP函数fstat
- 下一篇: mysql+where+且,MySQL