请问为啥ob_start一上来就用?

像phpcms还有其他很多开源都是这样,一上来就ob_start,我一个是不明白为什么上来就用,二是想问这样降低不降低效率?到底用这个干嘛?

作者: recher1114   发布时间: 2011-05-31

我也这样用
目的是为了我的ajax可以不用取到多余的值
效率不会降低,只是为了更好的控制输出罢了,看下边的代码

ob_start();
....
ob_clean();
这两句中间的任意输出,都可以用ob_get_contents();来获取而不输出到浏览器.

经典应用:将phpinfo()的信息抓取放入变量.
ob_start();
phpinfo();
$phpinfo = ob_get_contents();
//清理输出
ob_clean(); 

再看一个例子:
PHP code

//在此之前已经有内容输出了
$work=StrToLower(Toget("work"));
Switch ($work){
Case "gettown":        //
    _GetTown();
    Break;
Case "weather":        //抓取天氣
    _Weather();
    Break;
Case "hotels":        //首頁根據滾動條滾動抓去更多的hotel信息
    _Hotels();
    Break;
Case "ischk":        //搜尋时記憶用戶選中的項目,并写cookie
    _Ischk();
    Break;
Case "compare":        //加入比較时用来重建数组,并写cookie
    _Compare();
    Break;
Case "price":        //ajax獲取當前月的房價
    _Price();
    Break;
Case "jedit":        //ajax通用欄位修改
    _Jedit();
    Break;
Case "s":            //暫時保留對原來設施服務的訪問
    _S();
    Break;
Case "s1":            //暫時保留對原來設施服務的訪問
    _S1();
    Break;
Default:
    Break;
}
//------------------------------------------------*
Function _Ischk(){
    Global $Mysql;
    OB_clean();
//因为包含OB_clean,所以之前的输出我根本就不需要理会了,我可以直接在这里输出为ajax提供需求,但是使用OB_clean的前提是首先要开启ob_start,否则OB_clean清理不掉之前输出的内容.

    ..............
    Exit();
}

作者: sibang   发布时间: 2011-05-31

可以防止 header 前输出而影响

作者: yangball   发布时间: 2011-05-31

一上来就 ob_start 非但不会降低效率,反而会提高效率

作者: xuzuning   发布时间: 2011-05-31

顶贴收藏。

作者: blizzf99   发布时间: 2011-05-31