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

解决方案 »

  1.   

    我也这样用
    目的是为了我的ajax可以不用取到多余的值
    效率不会降低,只是为了更好的控制输出罢了,看下边的代码ob_start();
    ....
    ob_clean();
    这两句中间的任意输出,都可以用ob_get_contents();来获取而不输出到浏览器.经典应用:将phpinfo()的信息抓取放入变量.
    ob_start();
    phpinfo();
    $phpinfo = ob_get_contents();
    //清理输出
    ob_clean(); 再看一个例子://在此之前已经有内容输出了
    $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();
    }
      

  2.   

    可以防止 header 前输出而影响
      

  3.   

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