中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

PHP中的output_buffering詳細介紹
來源:易賢網 閱讀:1757 次 日期:2014-09-29 11:49:27
溫馨提示:易賢網小編為您整理了“PHP中的output_buffering詳細介紹”,方便廣大網友查閱!

我個人認為,Output buffering是比較純粹的4.0特征。盡管從概念上看來相當簡單,但是output buffering功能非常強大,能使開發者更容易地開發高級而有效的程序。

本文將介紹HTTP header,以及output buffering如何幫助您處理HTTP header,并介紹了output buffering的一些高級用法。

HTTP Header

對 于使用HTTP 協議建立的每個請求,Web服務器產生的響應通常包括兩個部分 – 標題和主體。例如,如果在Web服務器的文檔根目錄下有一個小文本文件,叫做example.txt,文件中包含文本Hello, world!,那么對此文件的HTTP 請求響應如下所示:

代碼如下:

HTTP/1.1 200 OK

Date: Sat, 02 Sep 2000 21:40:08 GMT

Server: Apache/1.3.11 (Unix) mod_macro/1.1.1 PHP/4.0.2-dev

Last-Modified: Sat, 02 Sep 2000 21:39:49 GMT

ETag: "12600b-e-39b173a5"

Accept-Ranges: bytes

Content-Length: 14

Connection: close

Content-Type: text/plain

Hello, world!

這 個請求中的第一部分(就是較多的那部分)就是HTTP header。雖然用戶在瀏覽器中看不到HTTP header,但它包含了用于瀏覽器的信息,例如文檔內容類型,使用的協議版本,文檔的最后更改日期等等。HTTP header并沒有太多的規則,通常情況下,它的格式如下:

代碼如下:

Field: Value[字段:值]

必須用空行將它們和文檔主體分開。

可以從PHP腳本添加或更改此HTTP header的信息。例如,可以使用 header() 函數:

代碼如下:

header("Location: http://www.php.net/"); // 重定向到 http://www.php.net/

也可以使用 SetCookie() 函數:

代碼如下:

SetCookie("foo", "bar");

你可能會知道HTTP cookies是使用 HTTP headers 來實現的。例如,以下PHP文件的 HTTP 請求響應

代碼如下:

<?php

SetCookie("foo", "bar");

print "Set cookie.";

?>

將會是這樣的:

代碼如下:

HTTP/1.1 200 OK

Date: Sat, 02 Sep 2000 21:43:02 GMT

Server: Apache/1.3.11 (Unix) mod_macro/1.1.1PHP/4.0.2-dev

X-Powered-By: PHP/4.0.2-dev

Set-Cookie: foo=bar

Connection: close

Content-Type: text/html

Set cookie.

瀏覽器讀取從服務器返回的 HTTP header,知道送來了一個叫做 foo 的 cookie (在這里是一個 session cookie),它的值是 bar。

為什么要使用Output Buffering技術

早 在PHP/FI 2.0時就很明顯需要output buffering技術了。如果你使用過這種版本的PHP,那么可能還記得經常會碰到 Oops, SetCookie called after header has been sent 這個錯誤消息,并使你捎頭抓耳,也弄不清是什么原因。

如 果你已使用過PHP的最新版本 -- PHP 3.0 甚至 PHP 4.0 -- 那么你會知道這個錯誤消息: Oops, php_set_cookie called after header has been sent。或者,你在試圖調用 PHP 的 header() 函數時會遇到 Cannot add header information - headers already sent 消息。一般來說,output buffering技術用戶避免這些煩人的錯誤消息,同時開發人員也可用于高級的用途。

這些錯誤是什么時候產生的呢?如果你在已經發送了HTTP header之后試圖添加或修改標題信息,以及在文檔主體和標題之間缺少空行時,就會產生這些錯誤消息。為了理解這是如何產生的,讓我們來看看PHP是如何處理HTTP header輸出和主體輸出的。

腳本開始執行時,它可以同時發送header(標題)信息和主體信息。

Header信息(來自 header() 或 SetCookie() 函數)并不會立即發送,相反,它被保存到一個列表中。

這樣就可以允許你修改標題信息,包括缺省的標題(例如 Content-Type 標題)。但是,一旦腳本發送了任何非標題的輸出(例如,使用塊或 print() 調用),那么PHP就必須先發送所有的標題,然后再送出空行,終止 HTTP header,而在此之后才會繼續發送主體數據。從這時開始,任何添加或修改標題信息的試圖都是不允許的,并會發送上述的錯誤消息之一。

雖然這并不會引起多大的問題,有時候只是在發出任何輸入之前終止HTTP header,從而引起腳本邏輯的復雜化而已。Output buffering技術可以解決這些問題。

Output Buffering的工作原理

啟用output buffering時,在腳本發送輸出時,PHP并 不發送HTTP header。相反,它將此輸出通過管道(pipe)輸入到動態增加的緩存中(只能在PHP 4.0中使用,它具有中央化的輸出機制)。你仍然可以修改,添加標題行,或者設置cookie,因為標題實際上并沒有發送。最簡單的情況是,當腳本終止 時,PHP將自動發送HTTP header到瀏覽器,然后再發送輸出緩沖中的內容。這簡單吧。

基本用法

可以使用下面的四個函數,它們可以幫助你控制output buffering:

代碼如下:

ob_start()

啟用output buffering機制。

Output buffering支持多層次 -- 例如,可以多次調用 ob_start() 函數。

ob_end_flush()

發送output buffer(輸出緩沖)并禁用output buffering機制。

ob_end_clean()

清除output buffer但不發送,并禁用output buffering。

ob_get_contents()

將當前的output buffer返回成一個字符串。允許你處理腳本發出的任何輸出。

此外,可以啟用 php.ini 中的 output_buffering 指令。如果啟用了此指令,那么每個PHP腳本都相當于一開始就調用了ob_start()函數。

Example 1

代碼如下:

<?php ob_start(); ?>

<h1>Example 1</h1>

<?php

print "Hello, $user ";

SetCookie("Wow", "This cookie has been set even though we've already emitted output!");

?>

這里,盡管你已發送了輸出(HTML代 碼塊中和 print 語句中),也可以使用 SetCookie() 調用,而不會出錯,真的要感謝output buffering機制。請注意使用output buffering機制用于這種目的會引起一定程度上的性能損失,因此最好缺省情況下不要啟用此機制。但是,對于復雜一些的腳本,output buffering可以簡化邏輯性。

Example 2

代碼如下:

<?php

ob_start();

print "Here's a pretty dumb way to calculate the length of a string.";

$length = strlen(ob_get_buffer());

ob_end_clean();

?>

這個例子顯示了一個效率很低的確定字符串長度的。它不是簡單的使用strlen()函數處理,而是先啟用 output buffering 機制,將字符串打印出來,然后再確定output buffer的長度。最后清除output buffer(并沒有發送),然后禁用output buffering機制。

更多信息請查看IT技術專欄

更多信息請查看腳本欄目
易賢網手機網站地址:PHP中的output_buffering詳細介紹
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!

2026上岸·考公考編培訓報班

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
云南網警備案專用圖標
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網
云南網警報警專用圖標
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
亚洲二区免费| 国产一区二区成人| 国产精品一区二区黑丝| 一区二区三区四区五区在线| 欧美日本在线观看| 亚洲午夜日本在线观看| 国产精品久久久久久久午夜 | 亚洲黄网站黄| 欧美色精品天天在线观看视频 | 国产伦精品一区二区三区照片91| 欧美一级在线视频| 亚洲欧洲一区| 国产精品国产| 美女视频一区免费观看| 制服丝袜激情欧洲亚洲| 国产一区二区精品丝袜| 欧美精品一区二区三区蜜臀| 亚洲综合首页| 亚洲美女视频网| 韩国av一区二区| 欧美日韩在线精品| 久久综合给合久久狠狠色| 亚洲精品自在久久| 国内自拍视频一区二区三区| 欧美日韩系列| 欧美高清在线视频| 久久激情网站| 亚洲永久网站| 一区二区av在线| 91久久久久久| 伊人影院久久| 国产一区二区精品| 国产精品永久| 欧美网站在线| 欧美日韩国产亚洲一区| 欧美体内谢she精2性欧美| 在线精品视频一区二区| 国产欧美日韩一区二区三区| 欧美激情第五页| 久久亚洲欧美| 久久精品女人| 久久精品91| 欧美中文日韩| 欧美一区二区三区精品| 亚洲免费视频观看| 亚洲视频图片小说| 一区二区高清视频在线观看| 99精品热6080yy久久| 亚洲精选国产| 亚洲精品视频免费观看| 亚洲日本乱码在线观看| 日韩午夜电影| 99天天综合性| 国产精品99久久久久久有的能看 | 久久九九国产| 久久精品在线播放| 久久久久久久高潮| 久久久久久91香蕉国产| 国产精品久久久久久超碰| 欧美激情一区二区久久久| 欧美成人免费网| 欧美激情一区二区三区在线视频观看| 男人天堂欧美日韩| 欧美极品aⅴ影院| 欧美日韩国产不卡| 欧美日韩一区二区在线视频| 欧美日韩一区精品| 国产精品任我爽爆在线播放 | 激情丁香综合| 亚洲高清三级视频| 91久久久久久久久| 一区二区三区av| 亚洲欧美日韩综合| 欧美中文字幕久久| 久久综合九色九九| 欧美精品粉嫩高潮一区二区| 国产精品激情偷乱一区二区∴| 国产精品日韩欧美| 在线免费不卡视频| 一区二区三区四区国产| 午夜日韩在线| 久久精品30| 欧美久久电影| 国产日韩在线看片| 亚洲伦伦在线| 性欧美1819sex性高清| 看欧美日韩国产| 欧美体内she精视频在线观看| 国产午夜精品全部视频在线播放 | 欧美在线黄色| 美国十次成人| 国产精品久久久久久妇女6080| 国产亚洲二区| 99一区二区| 国产精品久久久99| 久久免费精品视频| 久久人人爽人人爽| 另类国产ts人妖高潮视频| 久久久久久高潮国产精品视| 欧美一区二区三区男人的天堂 | 日韩亚洲欧美在线观看| 亚洲清纯自拍| 亚洲日韩中文字幕在线播放| 亚洲国产精品视频| 日韩视频一区二区三区在线播放 | 国产精品系列在线播放| 欧美三区不卡| 国产精品腿扒开做爽爽爽挤奶网站| 欧美视频福利| 国产欧美69| 黄色日韩在线| 极品中文字幕一区| 亚洲欧洲精品一区二区精品久久久| 亚洲精品国产精品国产自| 欧美久久九九| 国产精品美女久久久久久免费 | 欧美日本韩国| 亚洲大胆人体在线| 久久精品国产清自在天天线| 国产精品免费看| 一区二区三区www| 欧美日本在线观看| 日韩视频三区| 欧美高清在线一区| 久久久久久久尹人综合网亚洲 | 欧美激情一区二区三区在线视频观看| 国产亚洲精品7777| 欧美影院成人| 国产午夜精品美女视频明星a级| 亚洲欧美日本国产专区一区| 欧美日韩在线视频观看| 99精品久久免费看蜜臀剧情介绍| 欧美极品在线视频| 亚洲美女精品久久| 欧美三日本三级三级在线播放| 99伊人成综合| 欧美色偷偷大香| 亚洲午夜影视影院在线观看| 国产伦精品一区二区三| 性一交一乱一区二区洋洋av| 国产日韩欧美在线视频观看| 久久精品国产2020观看福利| 女女同性精品视频| 国产欧美日韩亚洲精品| 亚洲精品一二三| 久久精品一区二区三区四区| 欧美三级第一页| 亚洲高清视频一区二区| 午夜精品视频在线观看| 欧美精品二区三区四区免费看视频| 国产欧美精品一区| 一区二区高清视频| 欧美大尺度在线| 一区二区视频在线观看| 亚洲影视在线播放| 欧美日本一区| 亚洲国产视频a| 久久婷婷人人澡人人喊人人爽| 国产精品入口日韩视频大尺度| 亚洲精品日韩在线观看| 免费高清在线视频一区·| 国产一区视频网站| 国产精品一区在线观看| 亚洲视频免费看| 国产一区欧美日韩| 欧美经典一区二区| 亚洲免费人成在线视频观看| 欧美国产精品v| 一区二区三区波多野结衣在线观看| 国产精品一区二区在线观看| 欧美成人精品激情在线观看| 亚洲一级一区| 激情欧美国产欧美| 欧美性猛交xxxx乱大交退制版 | 你懂的视频一区二区| 一本色道久久88综合日韩精品| 国产视频观看一区| 欧美日韩mp4| 久久综合一区二区| 亚洲图片欧美一区| 精品成人免费| 国产精品久久久久久久久 | 亚洲综合日韩在线| 亚洲电影在线看| 国产精品大片| 欧美3dxxxxhd| 亚洲一区二区免费视频| 亚洲国产日韩欧美在线图片| 国产日本欧洲亚洲| 欧美紧缚bdsm在线视频| 久久久国产精品一区二区中文 | 在线午夜精品自拍| 欧美午夜精品电影| 亚洲视频在线观看免费| 国产精品视频区| 欧美一区二区福利在线| 国产午夜精品一区二区三区欧美 | 亚洲另类视频| 国产精品ⅴa在线观看h| 久久国产精品一区二区三区四区|