日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

PHP的ob多级缓冲设置

發布時間:2024/9/19 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP的ob多级缓冲设置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

參考:https://my.oschina.net/CuZn/blog/68650

例子1:(level3->level2->level1)->(level3 level2->level1)->(level3 level2 level1)->(輸出123)

<?php ob_start(); echo 'level 1<br/> '; ob_start(); echo 'level 2<br/> '; ob_start(); echo 'level 3<br/> '; ob_end_flush(); ob_end_flush(); ob_end_flush();level 1 level 2 level 3

例子2:(level3->level2->level1)->(level2->level1)->(level2 level1)->(輸出12)

<?php ob_start(); echo 'level 1<br/> '; ob_start(); echo 'level 2<br/> '; ob_start(); echo 'level 3<br/> '; ob_end_clean();//修改處 ob_end_flush(); ob_end_flush();level 1 level 2

例子3:(level3->level2->level1)->(level2->level1)->(level2 level1)->(null)

<?php ob_start(); echo 'level 1<br/> '; ob_start(); echo 'level 2<br/> '; ob_start(); echo 'level 3<br/> '; ob_end_clean(); //第一次修改 ob_end_flush(); ob_end_clean(); //第二次修改無輸出:最后一個順帶把level2也清除了 這次,什么都沒有輸出來。 中間不是有一個ob_flush()嗎?按理來說應該是輸出 level2 的。其實造成這樣的主要原因是輸出的多級緩沖機制。這個程序例子有三個ob_start(),就意味著他有3個緩沖區A,B,C,而其實php程序本身也有一個最終輸出的緩沖區,我們就把他叫做F。在這個程序中他這幾個緩沖區是有一定層次的,C->B->A->F,F層次最高,是程序最終的輸出緩沖,我們按上面的程序來進行講解。剛開始。 F:null ob_start();新建緩沖區A。 A: null -> F:nullecho 'level 1<br/> '; 程序有輸出,輸出進入最低的緩沖區A A: 'level 1<br/>' -> F:nullob_start(); 新建緩沖區B 。 B:null -> A: 'level 1<br/>' -> F:nullecho 'level 2<br/> '; 程序有輸出,輸出進入最低的緩沖區B B:'level 2<br/> ' -> A: 'level 1<br/>' ->F:nullob_start(); 新建緩沖區C C:null B:'level 2<br/> ' A: 'level 1<br/>' -> F:nullecho 'level 3<br/> '; 程序有輸出,輸出進入最低的緩沖區C C:'level 3<br/> ' -> B:'level 2<br/> ' -> A: 'level 1<br/>' -> F:nullob_end_clean(); //第一次修改 緩沖區C被清空并關閉。 B:'level 2<br/> ' -> A: 'level 1<br/>' -> F:nullob_end_flush(); 緩沖區B輸出到上一級的緩沖區A并關閉。 A: 'level 1<br/>level 2<br/> ' -> F:nullob_end_clean(); //第二次修改緩沖區A被清空并關閉。 此時緩沖區A的東西還沒真正輸出到最終的F中,因此也就整個程序也就沒有任何的輸出了。

緩沖函數

clean清除 flush輸出 帶end是最后的進行關閉一下

clean清除距離最近的

flush是按照先進先出的順序輸出

flush — 刷新輸出緩沖 ob_clean — 清空(擦掉)輸出緩沖區 ob_end_clean — 清空(擦除)緩沖區并關閉輸出緩沖 ob_end_flush — 沖刷出(送出)輸出緩沖區內容并關閉緩沖 ob_flush — 沖刷出(送出)輸出緩沖區中的內容 ob_get_clean — 得到當前緩沖區的內容并刪除當前輸出緩。 ob_get_contents — 返回輸出緩沖區的內容 ob_get_flush — 刷出(送出)緩沖區內容,以字符串形式返回內容,并關閉輸出緩沖區。 ob_get_length — 返回輸出緩沖區內容的長度 ob_get_level — 返回輸出緩沖機制的嵌套級別 ob_get_status — 得到所有輸出緩沖區的狀態 ob_gzhandler — 在ob_start中使用的用來壓縮輸出緩沖區中內容的回調函數。ob_start callback function to gzip output buffer ob_implicit_flush — 打開/關閉絕對刷送 ob_list_handlers — 列出所有使用中的輸出處理程序。 ob_start — 打開輸出控制緩沖 output_add_rewrite_var — 添加URL重寫器的值(Add URL rewriter values) output_reset_rewrite_vars — 重設URL重寫器的值(Reset URL rewriter values)

?

總結

以上是生活随笔為你收集整理的PHP的ob多级缓冲设置的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。