新建文件 demo.php
正常输出
<p>在 demo.php 文件下输出 html 文本</p>
开启输出控制缓冲 ob_start
<?php
ob_start(); // 打开输出控制缓冲
?>
<p>在 demo.php 文件下输出 html 文本</p>
<?php
$content = ob_get_contents(); // 返回输出缓冲区的内容
ob_end_flush(); // 冲刷出(送出)输出缓冲区内容并关闭缓冲
var_dump($content);
\
\
把缓存写入文件
<?php
$cache_name = md5(__FILE__) . '.html';
\
ob_start(); // 打开输出控制缓冲
?>
<p>在 demo.php 文件下输出 html 文本</p>
<?php
$content = ob_get_contents(); // 返回输出缓冲区的内容
ob_end_flush(); // 冲刷出(送出)输出缓冲区内容并关闭缓冲
\
$handle = fopen($cache_name, 'w');
fwrite($handle, $content);
fclose($handle);
var_dump($cache_name);
运行后生成临时文件 xxxx.html 缓存
\
关键缓存判断
<?php
$cache_name = md5(__FILE__) . '.html';
$cache_lifetime = 3600;
// filectime() 函数返回指定文件的上次修改时间
if (file_exists($cache_name)
&& filectime(__FILE__) <= filectime($cache_name)
&& filectime($cache_name) + $cache_lifetime > time()) {
// 缓存文件存在
// 当前文件是否有修改(文件的修改时间小于缓存文件的修改问)
// 缓存文件是否已经过期
include $cache_name;
exit;
}
\
ob_start(); // 打开输出控制缓冲
?>
<p>在 demo.php 文件下输出 html 文本</p>
<?php
$content = ob_get_contents(); // 返回输出缓冲区的内容
ob_end_flush(); // 冲刷出(送出)输出缓冲区内容并关闭缓冲
\
$handle = fopen($cache_name, 'w');
fwrite($handle, $content);
fclose($handle);
根据不同的用户 id 做不同的缓存
<?php
$id = intval($_GET['id']);
if (empty($id)) {
$id = '';
}
\
$cache_name = md5(__FILE__) . '-' . $id .'.html';
$cache_lifetime = 3600;
// filectime() 函数返回指定文件的上次修改时间
if (file_exists($cache_name)
&& filectime(__FILE__) <= filectime($cache_name)
&& filectime($cache_name) + $cache_lifetime > time()) {
// 缓存文件存在
// 当前文件是否有修改(文件的修改时间小于缓存文件的修改问)
// 缓存文件是否已经过期
include $cache_name;
exit;
}
\
ob_start(); // 打开输出控制缓冲
?>
<p>在 demo.php 文件下输出 html 文本. <?php echo $id?></p>
<?php
$content = ob_get_contents(); // 返回输出缓冲区的内容
ob_end_flush(); // 冲刷出(送出)输出缓冲区内容并关闭缓冲
\
$handle = fopen($cache_name, 'w');
fwrite($handle, $content);
fclose($handle);
\