关于静态模版
我看到网上有篇文章是说用OB来实现静态模版的,我不理解。
各位能否给我详细的讲解一下?
<?php
ob_start();//打开缓冲区
?>
php页面的全部输出
<?
$content = ob_get_contents();//取得php页面输出的全部内容
$fp = fopen(“output00001.html”, “w”); //创建一个文件,并打开,准备写入
fwrite($fp, $content); //把php页面的内容全部写入output00001.html,然后……
fclose($fp);
?>
问题点数:100、回复次数:16Top
1 楼syre(神仙)回复于 2004-08-01 11:00:34 得分 10
就是把php的输出写到一个文件里Top
2 楼ice_berg16(寻梦的稻草人)回复于 2004-08-01 11:04:22 得分 20
有什么不明白的?就是生成静态页面罢了Top
3 楼hlddn(西藏的那片天)回复于 2004-08-01 16:53:46 得分 10
还是挺有用的,前段时间写rss用的就是这种方法。Top
4 楼surfchen(冲浪)回复于 2004-08-01 17:47:44 得分 0
文章相关段落如下:
来,让我们看看能用ob系列函数做些什么……
一、 静态模版技术
简介:所谓静态模版技术就是通过某种方式,使得用户在client端得到的是由PHP产生的html页
面。如果这个html页面不会再被更新,那么当另外的用户再次浏览此页面时,程序将不会再调用
PHP以及相关的数据库,对于某些信息量比较大的网站,例如sina,163,sohu。类似这种的技术带
来的好处是非常巨大的。
我所知道的实现静态输出的有两种办法:
<1>.通过y10k修改的phplib的一个叫template.inc.php类实现。
<2>.使用ob系列函数实现。
对于第一种方法,因为不是这篇文章所要研究的问题,所以不再赘述。
我们现在来看一看第二种方法的具体实现:
Example 4.
-------------------------------------------------------------------------------------
---------------------------------
ob_start();//打开缓冲区
?>
php页面的全部输出
$content = ob_get_contents();//取得php页面输出的全部内容
$fp = fopen(“output00001.html”, “w”); //创建一个文件,并打开,准备写入
fwrite($fp, $content); //把php页面的内容全部写入output00001.html,然后……
fclose($fp);
?>
-------------------------------------------------------------------------------------
---------------------------------
这样,所谓的静态模版就很容易的被实现了……
————————————————————————————————————
我所不理解的是,为什么这里非要用ob呢?Top
5 楼xuzuning(唠叨)回复于 2004-08-02 08:01:47 得分 0
这是ob函数组的一个应用,并非生成静态页面一定要用ob函数
Top
6 楼surfchen(冲浪)回复于 2004-08-02 10:32:31 得分 0
但是在这里OB有什么用呢?Top
7 楼surfchen(冲浪)回复于 2004-08-03 17:47:32 得分 0
up一下Top
8 楼xuzuning(唠叨)回复于 2004-08-03 17:57:15 得分 20
他的作用是
缓存php的输出,即在ob_start()后php的输出都转向到缓冲区而不发往客户Top
9 楼surfchen(冲浪)回复于 2004-08-03 18:06:07 得分 0
我知道它原有的作用......但是在这里它有什么用?值得用吗?Top
10 楼mistjin(今天天气不错)回复于 2004-08-04 10:50:42 得分 15
要是没有ob_start()下面的代码有什么用???
$content = ob_get_contents();//取得php页面输出的全部内容
你怎么写*.html代码??
Top
11 楼surfchen(冲浪)回复于 2004-08-04 10:57:29 得分 0
我不单指ob_start();
我是指所有的ob系列函数在这里的使用。
我直接使用fread或file来实现不就行了?用ob系列函数有什么特别的优点吗?(别跟我说就是buffer)Top
12 楼xuzuning(唠叨)回复于 2004-08-04 11:38:36 得分 5
ob_functions是输出控制函数组。
在php中echo、print、printf等输出函数在执行时是直接将其结果送往系统的标准输出设备的
当使用ob时,这些输出将被重定向的缓冲区,而不被直接输出。一个例外是http头类函数的输出不被缓存
谁也没有强制你使用ob函数,你也不必要因别人使用而说三道四!
Top
13 楼surfchen(冲浪)回复于 2004-08-04 11:45:54 得分 0
我没有因别人使用说三道四。。。我只想知道用ob来进行静态模板有什么优点。OK?不要再跟我说什么buffer啊之类的,这个我懂。Top
14 楼ice_berg16(寻梦的稻草人)回复于 2004-08-04 12:00:58 得分 20
这只是生成静态页面的一种方法,当然你也可选择其它方法,
你使用fread和fwrite时除非有静态模板,
不然你读的都是PHP源代码,怎么获得生成后的数据?
又怎么能将生成后的数据生成静态页面?
使用ob函数就可以得到你PHP的执行后的结果。
Top
15 楼surfchen(冲浪)回复于 2004-08-04 12:16:57 得分 0
OK ~~结帖。。Top
16 楼litao3029(凡人梦)回复于 2004-10-22 17:26:17 得分 0
upTop




