php中flush()函數是一個非常重要的函數,它提供了在輸出內容時的控制能力。當我們使用php輸出內容時,有時需要讓部分內容可以在還沒有完全生成完畢時就立即被發送到瀏覽器端來顯示,這時就可以借助php的flush()函數來實現。那么,具體flush函數有什么作用呢?
flush函數的作用與使用方法
flush()函數的作用就是將緩沖器中的內容及時發送到瀏覽器端顯示。在php中,有時候我們需要將一些內容在輸出到頁面之前先進行一些處理,比如說統計一些信息。如果不調用flush()函數,這種需要處理時間的操作如果占用時間過長,可能就會造成頁面長時間沒有反應的狀況,用戶體驗不良。因為php輸出到瀏覽器的內容默認是會保存在一個緩沖器中的,只有等到php處理完畢后才會將所有內容一次性輸出。但是我們可以通過調用flush()函數來及時將緩沖器中的部分內容發送到頁面上,以便讓瀏覽器先看到部分內容,使得頁面不至于一直等待下去。下面我們通過具體的幾個例子來看看這個函數的功能。
例子一:
以下是我們首先想到的一個例子,一個基本的輸出Hello, World!:以上代碼將經過php進行編譯之后,最終結果是將字符"Hello, World!"完整的輸出到頁面中。我們可以看出,這種方式的輸出完全依賴于php的輸出緩沖機制,所有的內容都會被寫入緩沖器中,等到php程序運行完畢之后才會一次性輸出。如果我們想要實現更靈活的控制,可以使用flush()函數,如下:以上代碼首先輸出了"Hello, ",接著我們通過flush()函數將其寫入瀏覽器緩沖器中(這里模擬了1秒鐘的處理時間),然后再輸出"World!"。這樣的效果是,瀏覽器不用等待1秒鐘的處理時間,而是先看到了"Hello, "這部分內容,等到處理完畢后再看到"World!"。
例子二:
下面這個例子展示了如何使用單個php頁面進行連續的輸出:在這個例子中,我們通過flush函數將每一段內容分別輸出到瀏覽器上。在每個輸出之后,我們都進行了一個sleep(1)的操作,模擬了頁面處理時間(注意這里的時間單位是秒),從而能夠讓我們看到每次flush函數調用的效果。
例子三:
下面這個例子則是利用while循環輸出一些較大的信息:";
for($i = 1; $i<= 10; $i++) { // 共10行數據
echo "Line $i.\n";
flush();
sleep(1); // 1 秒的數據加載時間
}
echo "";
?>這個例子輸出了10行數據,但是我們在這里使用了
標簽來保持數據的格式,從而確保每一行數據都能夠準確地顯示。注意這里每次flush()調用之后都使用了sleep()方法模擬了1秒鐘的數據處理時間。這種方式的呈現效果與使用while循環輸出HTML是類似的。 總結 通過以上的例子我們可以看出,flush()函數可以有效地控制php程序在輸出數據時的表現,這不但使得用戶體驗上有了顯著的提升,而且能夠極大地增加程序的靈活性??偟膩碚f,flush()函數還是不錯的,雖然這個函數調用的時候語法有一些奇怪,不過如果你掌握了使用flush函數,或許你的程序輸出效果會更好。