天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

Php output buffering緩存及程序緩存深入解析

下面測試ob緩存和程序緩存:
在測試前為了測試效果更明顯,我們在php.ini里先關閉ob緩存并設置明顯的錯誤級別。
Output_buffering=off
Display_errors=on
代碼1:
復制代碼 代碼如下:
echo "php";
header("content-type:text/html;charset='utf-8'");
echo 'ok';

則會出現
php
Warning: Cannot modify header information - headers already sent by (output started at D:/www/apache/htdocs/test/t2.php:2) in D:/www/apache/htdocs/test/t2.php on line 3
ok
代碼2:
復制代碼 代碼如下:
ob_start();
 echo "php";
 header("content-type:text/html;charset='utf-8'");
 echo 'ok';

結果就完全正確了

原因分析:
代碼1:
php在echo ‘php'時已經向瀏覽器發送一個頭信息,
當再出現
header("content-type:text/html;charset='utf-8'");
又看到一個頭信息,這時已經打回了上面的頭信息,無法更該便出錯了。
代碼2:開啟了ob緩存,echo ‘php'時把要打給瀏覽器的數據先放到ob緩存里,之后又遇到一個頭信息,也放入Ob緩存,頁面結束時再按http協議到程序緩存后返回給瀏覽器。
為加深理解再看以下代碼
代碼3:
復制代碼 代碼如下:
ob_start();
echo "php";
header("content-type:text/html;charset='utf-8'");
echo 'ok';
echo '<hr/>';
$ob=ob_get_contents();
echo $ob;

會輸出


Ob_get_contents()只是取得ob緩存里的內容而不清楚它們
Ob_get_contents()必須在ob緩存沒有清除前使用
代碼4:
復制代碼 代碼如下:
ob_start();
 echo "php";
 ob_clean();//清除緩存內容但不關閉緩存區,還能用(往里添加東西)
 header("content-type:text/html;charset='utf-8'");
 echo 'ok';
 echo '<hr/>';
 $ob=ob_get_contents();
 echo $ob;

結果:


代碼5:
復制代碼 代碼如下:
ob_start();
echo "php";
ob_end_clean();//清空緩存內容并關閉緩存區,ob_get_contents取不到內容
header("content-type:text/html;charset='utf-8'");
echo 'ok';
echo '<hr/>';
$ob=ob_get_contents();
echo $ob;

結果:


代碼6:
復制代碼 代碼如下:
ob_start();
echo "php";
ob_end_flush();//把緩存送到程序緩存內并關閉ob緩存
header("content-type:text/html;charset='utf-8'");
echo 'ok';
echo '<hr/>';
$ob=ob_get_contents();
echo $ob;

代碼7:對比代碼6  與ob_flush()比較
復制代碼 代碼如下:
ob_start();
echo "php";
ob_flush();//把Ob 緩存送到程序緩存,不關閉ob緩存
header("content-type:text/html;charset='utf-8'");
echo 'ok';
echo '<hr/>';
$ob=ob_get_contents();
echo $ob;

結果:


Ob_clean()
清空ob緩存內容但不關閉
Ob_get_flush()
沖刷出緩存到程序緩存,關閉ob緩存
代碼8:
復制代碼 代碼如下:
Ob_start();
echo 'abc';
header("content-type:text/html;charset='utf-8'");
echo 'hello';
Ob_flush();
echo 'aa';
echo ob_get_contents();
//abchelloaaaa

2.ob_flush(),flush()與程序緩存
代碼9:
復制代碼 代碼如下:
ob_start();
echo 'a';
flush();//把Ob緩存沖刷到程序緩存再沖刷到瀏覽器輸出,不影響ob緩存
echo ob_get_contents();
//aa

代碼10:
復制代碼 代碼如下:
ob_start();
echo 'a';
ob_flush();//把Ob緩存沖刷到程序緩存,ob里沒有了緩存內容
echo "<br/>ob_con".ob_get_contents();
//a     是按正常輸出的,Ob里沒內容

程序緩存:
代碼11:
復制代碼 代碼如下:
echo str_repeat(" ",1024);//一些版本的 Microsoft InterNET Explorer 只有當接受到的256個字節以后才開始顯示該頁面,所以必須發送一些額外的空格來讓這些瀏覽器顯示頁面內容。
for($i=0;$i<5;$i++){
echo $i;
echo "<br/>";
sleep(1);
flush();
}

會一秒輸出一個數字
如果沒有flush();會把所有的輸出先暫存在程序緩存里,等完畢在整體返回給瀏覽器 這個例子說明了程序緩存

php技術Php output buffering緩存及程序緩存深入解析,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 人人碰79免费视频 | 免费观看亚洲视频 | 石原莉奈rbd806中文字幕 | 亚洲AV美女成人网站P站 | 蜜桃婷婷狠狠久久综合9色 蜜桃视频一区二区 | 手机伊在人线香蕉2 | 天美传媒在线观看完整高清 | 青青青视频在线 | 男人J进入女人P免费狂躁 | 97色伦图区97色伦综合图区 | 久久国语露脸精品国产 | 亚洲精品乱码8久久久久久日本 | 色丁香婷婷综合缴情综 | 如懿传免费观看在线全集 | 校园女教师之禁区 | 亚洲国产精品99久久久久久 | 国内精品乱码卡一卡2卡三卡 | 37大但人文艺术A级都市天气 | 日本不卡一二三 | 国产在线一区二区三区四区 | 白丝女仆被啪到深夜漫画 | 日韩精品一卡二卡三卡四卡2021 | 寂寞骚妇女被后入式抽插 | 成人免费在线视频 | 亚洲 国产 日韩 欧美 在线 | 好爽胸大好深好多水 | 国产人妻人伦精品久久久 | 欧美同志高清vivoeso | 耻辱诊察室1一4集动漫在线观看 | 国模玲玲自拍337p | 欧美亚洲曰韩一本道 | 国产亚洲精品97在线视频一 | 国产精品欧美久久久久天天影视 | 亚洲视频在线观看地址 | FREE乌克兰嫩交HD | 欧美区一区二 | 狠狠狠的在啪线香蕉 | 麻豆AV福利AV久久AV | 2020国产成人精品免费视频 | 俄罗斯6一9泑女网站 | 亚洲 日韩 色 图网站 |