首頁 後端開發 php教程 PHP中对缓冲区的统制实现代码

PHP中对缓冲区的统制实现代码

Jun 13, 2016 am 11:38 AM
info void

PHP中对缓冲区的控制实现代码

大家在使用PHP的过程中不免要使用到header和setcookie两个函数,这两个函数会发送一段文件头信息给浏览器,但是如果在使用这两个函数之前已经有了任何输出(包括空输出,比如空格,回车和换行)就会提示出错,提示信息如下:“Header had all ready send by”!那有什么方法可以在有了输出的情况下面在发送文件头信息呢?在PHP 4.0里面加入了缓冲区控制的几个函数,使用这些函数可以帮我们解决很多问题。

一、 相关函数简介:

1、Flush:输出缓冲区内的内容并且删除缓冲区。

函数格式:flush()

说明:这个函数经常使用,效率很高。

2、ob_start :打开输出缓冲区

函数格式:void ob_start(void)

说明:当缓冲区激活时,所有来自PHP程序的非文件头信息均不会发送,而是保存在内部缓冲区。为了输出缓冲区的内容,可以使用ob_end_flush()或者使用ob_end_clean()来输出缓冲区的内容。

3 、ob_get_contents :返回内部缓冲区的内容。

使用方法:string ob_get_contents(void)

说明:这个函数会返回当前缓冲区中的内容,如果输出缓冲区没有激活,则返回 FALSE 。

4、ob_get_length:返回内部缓冲区的长度。

使用方法:int ob_get_length(void)

说明:这个函数会返回当前缓冲区中的长度;和ob_get_contents一样,如果输出缓冲区没有激活。则返回 FALSE。

5、ob_end_flush :发送内部缓冲区的内容到浏览器,并且关闭输出缓冲区。

使用方法:void ob_end_flush(void)

说明:这个函数发送输出缓冲区的内容(如果有的话)。

6、ob_end_clean:删除内部缓冲区的内容,并且关闭内部缓冲区

使用方法:void ob_end_clean(void)

说明:这个函数不会输出内部缓冲区的内容!

7、ob_implicit_flush:打开或关闭绝对刷新

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

说明:使用过Perl的人都知道?$|=x的意义,这个字符串可以打开/关闭缓冲区,而ob_implicit_flush函数也和那个一样,默认为关闭缓冲区,打开绝对输出。

二、使用例子:

在一开始,笔者说了用缓冲区控制的函数可以防止文件头发送信息出错,下面就是一个例子:

?

.代码如下:

//PHP提示符
ob_start(); //打开缓冲区
echo "Hello/n"; //输出
header('location:gotourl.php'); //把浏览器重定向到gotourl.php
?>

?

如果去掉ob_start,PHP就会提示在文件的第4行出错(出错信息如前面所示),但是加上ob_start,就不会提示出错,原因是当打开了缓冲区,echo后面的字符不会输出到浏览器,而是保留在服务器,直到你使用flush或者ob_end_flush才会输出,所以并不会有任何文件头输出的错误!

下面再给出一个很经典的用途:

比如你用得到服务器和客户端的设置信息,但是这个信息会因为客户端的不同而不同,如果想要保存phpinfo()函数的输出怎么办呢?在没有缓冲区控制之前,可以说一点办法也没有,但是有了缓冲区的控制,我们可以轻松的解决:

?

.代码如下:


ob_start(); //打开缓冲区
phpinfo(); //使用phpinfo函数
?$info=ob_get_contents(); //得到缓冲区的内容并且赋值给?$info
?$file=fopen('info.txt','w'); //打开文件info.txt
fwrite(?$file,?$info); //写入信息到info.txt
fclose(?$file); //关闭文件info.txt
?>

?


用以上的方法,就可以把不同用户的phpinfo信息保存下来,这在以前恐怕没有办法办到!其实上面就是将一些“过程”转化为“函数”的方法!


另:验证码生成的图像,在将图像输出到浏览器里,要清除下缓存区
????????//清除缓存区
??????? ob_clean();
??????? //设置文件头;?
??????? Header("Content-type: image/PNG");

??????? //以PNG格式将图像输出到浏览器或文件;
??????? ImagePNG($distortion_im);

??????? //销毁一图像,释放与image关联的内存;
??????? ImageDestroy($distortion_im);
??????? ImageDestroy($im);

?

来源:http://www.poluoluo.com/jzxy/201309/243650.html

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

java中void是什麼意思 java中void是什麼意思 Mar 01, 2023 pm 07:19 PM

在java中,void是“空”的意思,即“什麼都不返回”,在方法申明的時候表示該方法沒有返回值。 void對應一個包裝類別“java.lang.Void”,該Void類別是用final修飾的,是一個不可實例化的佔位符類,用來保存一個引用代表了Java關鍵字void的Class物件。

PHP 中使用 void 類型傳回值有什麼意義? PHP 中使用 void 類型傳回值有什麼意義? Apr 10, 2024 pm 09:21 PM

在PHP中,void類型傳回值表示函數不傳回任何值,通常用於更新記錄等不需要傳回值的操作。聲明void函數時使用void關鍵字;呼叫void函數時,不得將結果指派給變數。實戰案例:void類型傳回值可用於更新資料庫記錄,無需傳回任何資訊。

C語言中的void關鍵字的作用 C語言中的void關鍵字的作用 Feb 19, 2024 pm 11:33 PM

C中的void是一個特殊的關鍵字,用來表示空類型,也就是指沒有具體類型的資料。在C語言中,void通常用於以下三個方面。函數傳回類型為void在C語言中,函數可以有不同的回傳類型,例如int、float、char等。然而,如果函數不傳回任何值,則可以將傳回類型設為void。這意味著函數執行完畢後,並不傳回具體的數值。例如:voidhelloWorld()

如何理解和解決「javascript:void(O)」的問題 如何理解和解決「javascript:void(O)」的問題 Feb 19, 2024 pm 05:35 PM

javascript:void(0)是什麼意思?解決這個問題的方法有哪些?當我們在瀏覽網頁時,有時會遇到一些連結點擊後並沒有任何回應,而在瀏覽器的網址列中卻顯示為"javascript:void(0)"的情況。這個問題可能會讓一些網頁訪客感到困惑,因為他們不知道這個字面上看起來像是JavaScript程式碼的錯誤訊息到底是什麼意思。那麼,就讓我們來一起解開這個

C++ 函式如何傳回 void 型別? C++ 函式如何傳回 void 型別? Apr 20, 2024 pm 01:06 PM

C++中void函數不傳回任何值,它的語法為voidfunction_name()。常見用途包括:輸入使用者輸入,例如取得使用者的年齡並列印到控制台。

javascriptvoid(o)怎麼解決 javascriptvoid(o)怎麼解決 Nov 23, 2023 am 11:02 AM

javascriptvoid(o)的解決方法:1、檢查語法錯誤;2、確保正確的執行環境;3、檢查其他程式碼的衝突;4、使用事件委託;5、使用其他綁定方式;6、檢查外部資源; 7.使用調試工具;8、更新依賴庫或外掛程式;9、檢查字元編碼;10、重構程式碼以減少依賴。解決 javascriptvoid(0)出現的錯誤需要仔細檢查程式碼、執行環境和相關依賴。

C語言中void的作用 C語言中void的作用 Apr 03, 2025 pm 04:12 PM

在 C 語言中,void 是一個關鍵字,表示無返回值。它被用於各種場景,例如:聲明無返回值的函數:void print_message();聲明無參數的函數:void print_message(void);定義無返回值的函數:void print_message() { printf("Hello world\n"); }定義無參數的函數:void print_message(void) { printf("Hell

thinkphp5如何關閉info資訊輸出 thinkphp5如何關閉info資訊輸出 Jun 03, 2023 am 11:49 AM

一、info的作用在開始關閉info之前,我們需要先了解它的作用。在ThinkPHP5框架中,info資訊輸出主要有三種形式:展示目前存取的URL和請求參數在頁面底部展示當前頁面的SQL語句執行情況和運行時間等偵錯資訊在執行錯誤時,輸出詳細的錯誤訊息,方便調試雖然看起來很有用,但對於真正的開發者而言,大多數的info資訊並不是非常有幫助的。通常,我們需要的是一些更簡潔的輸出,以便更好地專注於開發。二、關閉info關閉info很簡單,只需要在配置

See all articles