溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

php中flush()、ob_flush()與ob_end_flush()三者的區(qū)別是什么

發(fā)布時(shí)間:2021-01-05 15:42:48 來(lái)源:億速云 閱讀:142 作者:Leah 欄目:開發(fā)技術(shù)

php中flush()、ob_flush()與ob_end_flush()三者的區(qū)別是什么?相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。

flush()、ob_flush()、ob_end_flush()三者的區(qū)別:

首先,說(shuō)下buffer,它是一個(gè)內(nèi)存地址空間,為4096(1kb)【在php.ini配置文件中找到output_buffering配 置】,php有php output_buffering機(jī)制,php代碼在執(zhí)行的時(shí)候,并不是立即將內(nèi)容輸出,而是想將echo/print內(nèi)容輸出到buffer,buffer滿的時(shí)候才會(huì)將數(shù)據(jù)交給系統(tǒng)內(nèi)核交由tcp傳給瀏覽器顯示,當(dāng)開啟php php output_buffering機(jī)制(默認(rèn)是開啟的,可以通過(guò)ob_start()函數(shù)開啟)后,只有當(dāng)php buffer中的數(shù)據(jù)達(dá)到了設(shè)置值,才會(huì)將buffer中 的數(shù)據(jù)發(fā)送給瀏覽器。

但是瀏覽器也是有緩存的,一些版本的瀏覽當(dāng)數(shù)據(jù)達(dá)到256字節(jié)的時(shí)候才輸出內(nèi)容,flush()可以將等待輸出的內(nèi)容立即發(fā)送到客戶端,而ob_flush()只有等待到buffer滿的時(shí)候才輸出。

這里為大家舉一個(gè)簡(jiǎn)單的例子,作為驗(yàn)證:

復(fù)制代碼 代碼如下:


<?php
//防止瀏覽器的緩存
echo str_repeat(" ",1024);
for($i=0;$i<5;$i++){
 echo $i;
 sleep(1);
 flush();//會(huì)每隔1s輸出一個(gè)數(shù)字,如果使用ob_flush()則會(huì)等待5s一起輸出
}
?>

看完上述內(nèi)容,你們掌握php中flush()、ob_flush()與ob_end_flush()三者的區(qū)別是什么的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI