页面缓存就是把页面保存到一个文件中,下次读出时直接调用文件而不查询数据库,这里我们介绍利用ob_start()来实现.
例,代码如下:
-
<?php
-
ob_start();
-
phpinfo();
-
$info=ob_get_contents();
-
$file=fopen(’info.txt’,’w’);
-
fwrite($file,$info);
-
fclose($file);
-
-
?>
以上的方法,可以把不同用户的phpinfo信息保存下来,这里我们可以着重看看这个方法的使用技巧,用这个方法可以实现生成静态页面的便利.
并且用这个方法比用file_get_conents()的方法更合理更有效率,简单的说个应用吧,比如想要把phpinfo()的内容写入文件,可以这样做:
-
ob_start();
-
$phpinfo = phpinfo();
-
-
ob_end_flush();
-
或者还有这样的用途:
-
ob_start();
-
echo "Hellon";
-
header("location:index.php");
-
ob_end_flush();
header()会发送一段文件头给浏览器,但是如果在header()之前已经有了任何输出(包括空输出,比如空格,回车和换行)就会报错,但是如果输出在ob_start()和ob_end_flush()之间,就会没有问题,因为在输出前打开了缓冲区,echo后面的字符就不会输出到浏览器,而是保留在服务器,知道使用flush才会输出,所以header()会正常执行.
当然,ob_start()还可以有参数,参数就是一个回调函数,例子如下:
-
<? php
-
function callback($buffer)
-
{
-
-
return (str_replace("apples", "oranges", $buffer));
-
}
-
ob_start("callback");
-
?>
-
<html>
-
<body>
-
<P>It's like comparing apples to oranges.</P>
-
</ body >
-
</ html >
-
<?php
-
ob_end_flush();
-
?>
-
以上程序会输出:
-
<html >
-
<body>
-
<p>It's like comparing oranges to oranges.</ p>
-
</ body>
-
</ html>
-
(责任编辑:最模板) |