通常的情況下用php輸出內容會先快取, 到最後全部輸出. 如果有乙個多步的耗時操作, 所有的結果都要等到頁面執行完後才能看到. 中間漫長的過程只有等待. 能不能立即都看到每步的結果呢
ob_flush 是重新整理php自身的緩衝區。
flush 只有在php做為apache的module(handler或者filter)安裝的時候,才有實際作用,它是重新整理webserver(可以認為特指apache)的緩衝區,即重新整理到瀏覽器輸出。
有些apache的模組,比如mod_gzip,可能自己進行輸出快取,這將導致flush()函式產生的結果不會立即被傳送到客戶端瀏覽器。 而 ie瀏覽器 只有當接受到的 4096個位元組以後才開始顯示該頁面,所以必須傳送一些額外的空格來讓這些瀏覽器顯示頁面內容(原因:nginx有fastcgi 緩衝區,資料超出緩衝區大小、或程式執行完,才會將內容輸出到客戶端: fastcgi_buffer_size 4k; )。正確使用倆者的順序是. 先ob_flush, 然後flush,當然, 在其他sapi下, 不呼叫flush也可以, 只不過為了保證你**的可移植性, 建議配套使用.
php實時顯示輸出:
12
3
4
5
6
7
8
9
10
11
//實時顯示輸出
ob_end_flush()
;//關閉php快取,或者在flush前ob_flush();
echo
str_repeat
(" "
,1024);
//ie下 需要先傳送256個位元組, firefox 1024, chrome 2048
set_time_limit(0
);for($i
=0;$i
<10;
$i++)
PHP即時實時輸出內容
一般情況下,php都是將整個頁面全部執行完成後,才會把要輸出的內容傳送回客戶端。for i 0 i 10 i 這段 會在十秒後輸出 12345678910 如果要實現每秒實時輸出一位可用以下兩種方式 設定執行時間不限時 set time limit 0 清除並關閉緩衝,輸出到瀏覽器之前使用這個函式。...
關於php關閉輸出快取,實現即時輸出
php輸出預設所有的輸出放到最後一起輸出,如果要實現即時輸出則需要關閉輸出快取,在apache下用到的方法是 ob end flush 關閉快取 ob implicit flush true 每次快取即時輸出相當於每次輸出後呼叫flush 需要注意的是每次輸出如果用ajax呼叫需要加乙個休眠時間,經...
PHP實現即時輸出 實時輸出內容方法
老生長談了。純備忘 對於執行時間較長的php程式來說可能都需要即時輸出內容來檢視運 況。複製 程式設計客棧 如下 header content type text html charset utf 8 設定執行時間不限時 set time limit 0 清除並關閉緩衝,輸出到瀏覽器之前使用這個函式...