溫馨提示×

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

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

php設(shè)置緩沖區(qū)的方法

發(fā)布時(shí)間:2020-08-12 09:50:14 來(lái)源:億速云 閱讀:118 作者:小新 欄目:編程語(yǔ)言

這篇文章給大家分享的是有關(guān)php設(shè)置緩沖區(qū)的方法的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧。

php緩沖區(qū)設(shè)置的方法:首先打開(kāi)緩沖區(qū),代碼為【ob_start()】;然后返回內(nèi)部緩沖區(qū)的內(nèi)容,代碼為【ob_get_contents】;最后發(fā)送內(nèi)部緩沖區(qū)的內(nèi)容到瀏覽器,并且關(guān)閉輸出緩沖區(qū),代碼為【ob_end_flush】。

php設(shè)置緩沖區(qū)的方法

php緩沖區(qū)設(shè)置的方法:

一、 相關(guān)函數(shù)簡(jiǎn)介:

1、Flush:輸出緩沖區(qū)內(nèi)的內(nèi)容并且刪除緩沖區(qū)。

函數(shù)格式:flush()

說(shuō)明:這個(gè)函數(shù)經(jīng)常使用,效率很高。

2、ob_start :打開(kāi)輸出緩沖區(qū)

函數(shù)格式:void ob_start(void)

說(shuō)明:當(dāng)緩沖區(qū)激活時(shí),所有來(lái)自PHP程序的非文件頭信息均不會(huì)發(fā)送,而是保存在內(nèi)部緩沖區(qū)。為了輸出緩沖區(qū)的內(nèi)容,可以使用ob_end_flush()或者使用ob_end_clean()來(lái)輸出緩沖區(qū)的內(nèi)容。

3 、ob_get_contents :返回內(nèi)部緩沖區(qū)的內(nèi)容。

使用方法:string ob_get_contents(void)

說(shuō)明:這個(gè)函數(shù)會(huì)返回當(dāng)前緩沖區(qū)中的內(nèi)容,如果輸出緩沖區(qū)沒(méi)有激活,則返回 FALSE 。

4、ob_get_length:返回內(nèi)部緩沖區(qū)的長(zhǎng)度。

使用方法:int ob_get_length(void)

說(shuō)明:這個(gè)函數(shù)會(huì)返回當(dāng)前緩沖區(qū)中的長(zhǎng)度;和ob_get_contents一樣,如果輸出緩沖區(qū)沒(méi)有激活。則返回 FALSE。

5、ob_end_flush :發(fā)送內(nèi)部緩沖區(qū)的內(nèi)容到瀏覽器,并且關(guān)閉輸出緩沖區(qū)。

使用方法:void ob_end_flush(void)

說(shuō)明:這個(gè)函數(shù)發(fā)送輸出緩沖區(qū)的內(nèi)容(如果有的話)。

6、ob_end_clean:刪除內(nèi)部緩沖區(qū)的內(nèi)容,并且關(guān)閉內(nèi)部緩沖區(qū)

使用方法:void ob_end_clean(void)

說(shuō)明:這個(gè)函數(shù)不會(huì)輸出內(nèi)部緩沖區(qū)的內(nèi)容!

7、ob_implicit_flush:打開(kāi)或關(guān)閉絕對(duì)刷新

使用方法:void ob_implicit_flush ([int flag])

說(shuō)明:使用過(guò)Perl的人都知道?$|=x的意義,這個(gè)字符串可以打開(kāi)/關(guān)閉緩沖區(qū),而ob_implicit_flush函數(shù)也和那個(gè)一樣,默認(rèn)為關(guān)閉緩沖區(qū),打開(kāi)絕對(duì)輸出。

二、使用例子:

在一開(kāi)始,筆者說(shuō)了用緩沖區(qū)控制的函數(shù)可以防止文件頭發(fā)送信息出錯(cuò),下面就是一個(gè)例子:

代碼如下:

<? //PHP提示符
ob_start(); //打開(kāi)緩沖區(qū)
echo "Hello/n"; //輸出
header('location:gotourl.php'); //把瀏覽器重定向到gotourl.php
?>

如果去掉ob_start,PHP就會(huì)提示在文件的第4行出錯(cuò)(出錯(cuò)信息如前面所示),但是加上ob_start,就不會(huì)提示出錯(cuò),原因是當(dāng)打開(kāi)了緩沖區(qū),echo后面的字符不會(huì)輸出到瀏覽器,而是保留在服務(wù)器,直到你使用flush或者ob_end_flush才會(huì)輸出,所以并不會(huì)有任何文件頭輸出的錯(cuò)誤!

下面再給出一個(gè)很經(jīng)典的用途:

比如你用<?phpinfo();?>得到服務(wù)器和客戶端的設(shè)置信息,但是這個(gè)信息會(huì)因?yàn)榭蛻舳说牟煌煌绻胍4鎝hpinfo()函數(shù)的輸出怎么辦呢?在沒(méi)有緩沖區(qū)控制之前,可以說(shuō)一點(diǎn)辦法也沒(méi)有,但是有了緩沖區(qū)的控制,我們可以輕松的解決:

代碼如下:

<?
ob_start(); //打開(kāi)緩沖區(qū)
phpinfo(); //使用phpinfo函數(shù)
?$info=ob_get_contents(); //得到緩沖區(qū)的內(nèi)容并且賦值給?$info
?$file=fopen('info.txt','w'); //打開(kāi)文件info.txt
fwrite(?$file,?$info); //寫(xiě)入信息到info.txt
fclose(?$file); //關(guān)閉文件info.txt
?>

感謝各位的閱讀!關(guān)于php設(shè)置緩沖區(qū)的方法就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向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