PHP基于文件存储实现缓存的方法


Posted in PHP onJuly 20, 2015

本文实例讲述了PHP基于文件存储实现缓存的方法。分享给大家供大家参考。具体如下:

在一些数据库数据记录较大,但是服务器有限的时候,可能一条MySQL查询就会好几百毫秒,一个简单的页面一般也有十几条查询,这个时候也个页面加载下来基本要好几秒了,如果并发量高的话服务器基本就瘫痪了,造成一个页面很久也加载不下来,这个时候我们可以使用文件缓存来缓解下MySQL的压力,下面给个使用例子。

<?php
//页面业务逻辑处理,获得结果
$objPage = new Page_IndexModel($arrParams);
//一系列的业务逻辑放在了objPage中,调用process方法获得结果集
$arrResult = $objPage->process();
//获得结果后smarty赋值
$smarty->assign($arrResult);
//输出模板
$smarty->display();
?>

现在我们用文件缓存来略过Page业务处理这一步

<?php
$cachFile = './index.php';
//缓存文件存在且时间不超过一小时,则直接使用缓存的结果集,不在进行任何的MySQL查询了
if(file_exists($cacheFile) && time()-filemtime($cachFile) < 3600) {
  //使用缓存中的结果
  $arrResult = include($cachFile);
} else {
  $objPage = new Page_IndexModel($arrParams);
  $arrResult = $objPage->process();
  $strContent = "<?php \n return ".var_export($arrResult, true)."\n;";
  //将结果集缓存
  file_put_contents($cachFile, $strContent);
}
//获得结果后smarty赋值
$smarty->assign($arrResult);
//输出模板
$smarty->display();

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
人大复印资料处理程序_输入篇
Oct 09 PHP
PHP安装攻略:常见问题解答(三)
Oct 09 PHP
PHP $_SERVER详解
Jan 16 PHP
php 传值赋值与引用赋值的区别
Dec 29 PHP
phpMyAdmin 链接表的附加功能尚未激活问题的解决方法(已测)
Mar 27 PHP
解析PHP计算页面执行时间的实现代码
Jun 18 PHP
php字符比较函数similar_text、strnatcmp与strcasecmp用法分析
Nov 18 PHP
Zend Framework实现多服务器共享SESSION数据的方法
Mar 22 PHP
php 防止表单重复提交两种实现方法
Nov 03 PHP
PHP实现的基于单向链表解决约瑟夫环问题示例
Sep 30 PHP
详谈PHP中public,private,protected,abstract等关键字的用法
Dec 31 PHP
PHP实现两种排课方式
Jun 26 PHP
详解PHP错误日志的获取方法
Jul 20 #PHP
php实现网站顶踩功能的完整前端代码
Jul 19 #PHP
php实现上传图片文件代码
Jul 19 #PHP
54个提高PHP程序运行效率的方法
Jul 19 #PHP
浅谈COOKIE和SESSION区别
Jul 19 #PHP
PHP使用NuSOAP调用Web服务的方法
Jul 18 #PHP
PHP使用正则表达式获取微博中的话题和对象名
Jul 18 #PHP
You might like
业余方法DIY电子管FM收音机
2021/03/02 无线电
php chr() ord()中文截取乱码问题解决方法
2008/09/08 PHP
一个简洁实用的PHP缓存类完整实例
2014/07/26 PHP
Yii模型操作之criteria查找数据库的方法
2016/07/15 PHP
php curl获取https页面内容,不直接输出返回结果的设置方法
2019/01/15 PHP
图片上传插件jquery.uploadify详解
2013/11/15 Javascript
JavaScript中变量声明有var和没var的区别示例介绍
2014/09/15 Javascript
一个JavaScript防止表单重复提交的实例
2014/10/21 Javascript
JavaScript前端图片加载管理器imagepool使用详解
2014/12/29 Javascript
浅析JavaScript事件和方法
2015/02/28 Javascript
jQuery实现高亮显示网页关键词的方法
2015/08/07 Javascript
jQuery实现可展开合拢的手风琴面板菜单
2015/09/15 Javascript
设计模式中的facade外观模式在JavaScript开发中的运用
2016/05/18 Javascript
JS 对象(Object)和字符串(String)互转方法
2016/05/20 Javascript
js判断手机号是否正确并返回的实现代码
2017/01/17 Javascript
EasyUi 打开对话框后控件赋值及赋值后不显示的问题解决办法
2017/01/19 Javascript
图片加载完成再执行事件的实例
2017/11/16 Javascript
浅谈React + Webpack 构建打包优化
2018/01/23 Javascript
深入理解Vue 组件之间传值
2018/08/16 Javascript
JS实现简易贪吃蛇游戏
2020/08/24 Javascript
python实现定制交互式命令行的方法
2014/07/03 Python
PyQt5 pyqt多线程操作入门
2018/05/05 Python
python遍历文件夹找出文件夹后缀为py的文件方法
2018/10/21 Python
Python 迭代,for...in遍历,迭代原理与应用示例
2019/10/12 Python
如何在python开发工具PyCharm中搭建QtPy环境(教程详解)
2020/02/04 Python
python GUI模拟实现计算器
2020/06/22 Python
巴西24小时在线药房:Droga Raia
2020/05/12 全球购物
幼儿园毕业园长感言
2014/02/24 职场文书
公司营业员的自我评价
2014/03/04 职场文书
医院搬迁方案
2014/06/14 职场文书
关于晚自习早退的检讨书
2014/09/13 职场文书
师德师风自查材料
2014/10/14 职场文书
内乡县衙导游词
2015/02/05 职场文书
《倍数和因数》教学反思
2016/02/23 职场文书
个人销售励志奋斗口号
2019/12/05 职场文书
nginx共享内存的机制详解
2022/03/21 Servers