请问为啥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
目的是为了我的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