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();會把所有的輸出先暫存在程序緩存裡,等完畢在整體返回給浏覽器 這個例子說明了程序緩存