php页面缓存的例子(减经cpu与mysql负担)

发布时间:2020-10-07编辑:脚本学堂
本文介绍一个php实现页面缓存的例子,用于减轻cpu与mysql数据库的负担。有需要的朋友,参考下吧。

首先,熟悉下php实现缓存的几个函数:
ob_start():页面缓存开始的标志,此函数一下的内容直至ob_end_flush()或者ob_end_clean()都保存在页面缓存中;
ob_get_contents():用来获取页面缓存中的内容;
ob_end_flush():表示页面缓存结束。并且经我验证,缓存的内容将输出到当前页面上,也就是可以显示缓存内容。
用此三个php函数,就可以实现强大的功能。如果数据库查询量较大,可以用cache来解决这个问题。

下面讲下具体的操作。

首先,设定过期时间,如果要求缓存文件2个小时过期,就可以设定cache_time为3600*2;
通过filectime()来获取缓存文件的创建时间(或 filemtime()获取修改时间),如果当前时间跟文件的创建时间超过限定的过期时间,就可以通过上面三个函数,首先从数据
库中取出数据,然后开始缓存ob_start(),然后把要生成的页面的html代码写在缓存中,缓存结束后通过ob_get_contents()获取到缓存的内容,然后通过fwrite把缓存内容写
到静态页面html。
如果未过期,直接读取cache中的静态页面即可,避免了大量的数据库访问。

实例代码:
 

<?php
/**
* php缓存页面实例
* edit by www.jb200.com
* at 2013/7/4
*/
$_time =10;
$dir="D:php";
function cache_start($_time, $dir)
{
  $cachefile = $dir.'/'.sha1($_SERVER['REQUEST_URI']).'.html';
  $cachetime = $_time;
  ob_start();
  if(file_exists($cachefile) && (time()-filemtime($cachefile) < $cachetime))
  {
    include($cachefile);
    ob_end_flush();
    exit;
  }
}
function cache_end($dir)
{
  $cachefile = $dir.'/'.sha1($_SERVER['REQUEST_URI']).'.html';
  $fp = fopen($cachefile, 'w');
  fwrite($fp, ob_get_contents());
  fclose($fp);
  ob_end_flush();
}
cache_start($_time, $dir);
//以下是输出的内容,放在cache_start和cache_end两个方法之间
for ($i=0;$i<5;$i++)
{
  echo $i;
  sleep(1);
}
cache_end($dir);
?>

更多有关php缓存的内容,请参考文章:
php缓存并压缩动态页面的方法介绍
一个php缓存类与调用示例
php简单页面缓存的实现代码
php缓存函数简介
php页面缓存ob系列函数的相关介绍
有关php的缓存技术介绍
一个php的页面缓存类
细说PHP下的缓存技术

您可能感兴趣的文章:
php获取CPU使用情况的代码
php中使用proc/loadavg监控CPU的平均负载
php记录服务器负载、内存、cpu状态的代码
php获取cpu与内存使用情况的代码一例
php获取linux服务器CPU、内存、硬盘使用率的实现代码
php获取计算机唯一标识信息(cpu,网卡,MAC地址)的代码
PHP-CGI 进程 CPU 100% 与 file_get_contents 函数的关系
php程序随机记录mysql rand()造成CPU 100%的解决方法
php获取CPU使用信息