php缓存实例,一个PHP缓存类实例

一个PHP缓存类实例

发布于 2014-08-05 21:44:28 | 104 次阅读 | 评论: 0 | 来源: 网友投递

PHP开源脚本语言PHP(外文名: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,入门门槛较低,易于学习,使用广泛,主要适用于Web开发领域。PHP的文件后缀名为php。

本文是了一个简洁实用的PHP缓存类,可用来检查缓存文件是否在设置更新时间之内、清除缓存文件、根据当前动态文件生成缓存文件名、连续创建目录、缓存文件输出静态等功能。对于采用PHP开发CMS系统来说,离不开对缓存的处理,合理利用好缓存可有效的提高程序执行效率。缓存的应用对于php大型项目的开发来说至关重要,需要的朋友可以参考下

php缓存类文件完整代码如下:

/*

* 缓存类 cache

*/

class cache {

//缓存目录

var $cacheRoot = "./cache/";

//缓存更新时间秒数,0为不缓存

var $cacheLimitTime = 0;

//缓存文件名

var $cacheFileName = "";

//缓存扩展名

var $cacheFileExt = "php";

/*

* 构造函数

* int $cacheLimitTime 缓存更新时间

*/

function cache( $cacheLimitTime ) {

if( intval( $cacheLimitTime ) )

$this->cacheLimitTime = $cacheLimitTime;

$this->cacheFileName = $this->getCacheFileName();

ob_start();

}

/*

* 检查缓存文件是否在设置更新时间之内

* 返回:如果在更新时间之内则返回文件内容,反之则返回失败

*/

function cacheCheck(){

if( file_exists( $this->cacheFileName ) ) {

$cTime = $this->getFileCreateTime( $this->cacheFileName );

if( $cTime + $this->cacheLimitTime > time() ) {

echo file_get_contents( $this->cacheFileName );

ob_end_flush();

exit;

}

}

return false;

}

/*

* 缓存文件或者输出静态

* string $staticFileName 静态文件名(含相对路径)

*/

function caching( $staticFileName = "" ){

if( $this->cacheFileName ) {

$cacheContent = ob_get_contents();

ob_end_flush();

if( $staticFileName ) {

$this->saveFile( $staticFileName, $cacheContent );

}

if( $this->cacheLimitTime )

$this->saveFile( $this->cacheFileName, $cacheContent );

}

}

/*

* 清除缓存文件

* string $fileName 指定文件名(含函数)或者all(全部)

* 返回:清除成功返回true,反之返回false

*/

function clearCache( $fileName = "all" ) {

if( $fileName != "all" ) {

$fileName = $this->cacheRoot . strtoupper(md5($fileName)).".".$this->cacheFileExt;

if( file_exists( $fileName ) ) {

return @unlink( $fileName );

}else return false;

}

if ( is_dir( $this->cacheRoot ) ) {

if ( $dir = @opendir( $this->cacheRoot ) ) {

while ( $file = @readdir( $dir ) ) {

$check = is_dir( $file );

if ( !$check )

@unlink( $this->cacheRoot . $file );

}

@closedir( $dir );

return true;

}else{

return false;

}

}else{

return false;

}

}

/*根据当前动态文件生成缓存文件名*/

function getCacheFileName() {

return $this->cacheRoot . strtoupper(md5($_SERVER["REQUEST_URI"])).".".$this->cacheFileExt;

}

/*

* 缓存文件建立时间

* string $fileName 缓存文件名(含相对路径)

* 返回:文件生成时间秒数,文件不存在返回0

*/

function getFileCreateTime( $fileName ) {

if( ! trim($fileName) ) return 0;

if( file_exists( $fileName ) ) {

return intval(filemtime( $fileName ));

}else return 0;

}

/*

* 保存文件

* string $fileName 文件名(含相对路径)

* string $text 文件内容

* 返回:成功返回ture,失败返回false

*/

function saveFile($fileName, $text) {

if( ! $fileName || ! $text ) return false;

if( $this->makeDir( dirname( $fileName ) ) ) {

if( $fp = fopen( $fileName, "w" ) ) {

if( @fwrite( $fp, $text ) ) {

fclose($fp);

return true;

}else {

fclose($fp);

return false;

}

}

}

return false;

}

/*

* 连续建目录

* string $dir 目录字符串

* int $mode 权限数字

* 返回:顺利创建或者全部已建返回true,其它方式返回false

*/

function makeDir( $dir, $mode = "0777" ) {

if( ! $dir ) return 0;

$dir = str_replace( "\", "/", $dir );

$mdir = "";

foreach( explode( "/", $dir ) as $val ) {

$mdir .= $val."/";

if( $val == ".." || $val == "." || trim( $val ) == "" ) continue;

if( ! file_exists( $mdir ) ) {

if(!@mkdir( $mdir, $mode )){

return false;

}

}

}

return true;

}

}

?>

使用该缓存类的时候可将以上代码保存为cache.php,具体用法如下所示:

include( "cache.php" );

$cache = new cache(30);

$cache->cacheCheck();

echo date("Y-m-d H:i:s");

$cache->caching();

相关阅读:

一个PHP缓存类实例

一个PHP缓存类代码

一个简单的php缓存类分享

一个简单实用的PHP缓存类

一个简单至极的PHP缓存类代码

一个PHP并发访问实例代码

一个好用的PHP验证码类实例代码分享

php文件缓存类用法实例分析

一个完整的php文件上传类实例讲解

PHP采集类Snoopy抓取图片实例代码

一个PHP的ZIP压缩类分享

一个PHP针对数字的加密解密类

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/343846.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[渝粤教育] 中国地质大学 金融保险业会计 复习题

《金融保险会计》模拟题 单选题 1.下列不符合外汇分账制基本要求的有(). A.对各种外币的收付凡有人民币牌价的平时都按原币填制凭证登记账簿编制报表 B.对各种外币的收付凡有人民币牌价的平时都按人民币填制凭证登记账簿编制报表 C.设置”外汇买卖”科目 D.各种外币分别设置一…

光纤收发器常见指示灯的意义

光纤收发器是一种常见的网络设备,主要用于延长网络传输距离。它有很多指示灯,其中LAN指示灯、POWER指示灯、POTS指示灯、LOS指示灯、PON指示灯比较常见,不同指示灯代表着不同的意义,我们可以通过指示灯的闪烁情况和开关情况&#…

php mysql_query预处理,php+mysqli使用预处理技术进行数据库查询的方法

本文实例讲述了phpmysqli使用预处理技术进行数据库查询的方法。分享给大家供大家参考。具体如下:代码有些难度,需要基础知识比较扎实才能好理解,代码先放上来:这里实现查询所有 id>5 的 id,title,conten…

[渝粤教育] 中国地质大学 高级会计学 复习题

《高级会计学》模拟题 一单选题 1.2007年1月1日甲公司以一台固定资产和银行存款400万元向乙公司投资()占乙公司注册资本的60%该固定资产的账面原价为8000万元已计提累计折旧500万元已计提固定资产减值准备200万元公允价值为7600万元.同日乙公司可辨认净资产公允价值为13000万元…

实现函数克隆_哪个更好的选择:克隆或复制构造函数?

实现函数克隆这就是我开始撰写本文的方式。 我已经读过很多次这样的声明: “当对象引用可变的最终字段时,克隆变得很困难。” 每次我在Google上搜索它时,都要了解它的确切含义,并且在此过程中也忘了它。 因此以为我会将其写在博客…

[渝粤教育] 西南科技大学 服务管理 在线考试复习资料

服务管理——在线考试复习资料 一、单选题 1.不属于服务组织排队结构的是( ) A.随机排队 B.单一排队 C.多条排队 D.领号排队 2.服务接触的三元组合没有下列哪项是( ) A.服务组织 B.与客户接触服务人员 C.顾客 D.服务流程 3.下列哪种服务属于复杂性高而且标准化程度高的( ) A.…

光纤收发器元件级和整机测试内容介绍

对光纤收发器的测试可分为元件级和整机测试,元件级测试主要包括对光纤收发器内部关键器件在电工作的电性能测试。整机测试主要指将光纤收发器接入到以太局域网中,测试整机的功能、性能和特性。那么,具体要怎样测试光纤收发器才是一次完整的测…

java中使用okhttpsoap,Android okHttp网络请求之Retrofit+Okhttp+RxJava组合

Retrofit介绍:Retrofit和okHttp师出同门,也是Square的开源库,它是一个类型安全的网络请求库,Retrofit简化了网络请求流程,基于OkHtttp做了封装,解耦的更彻底:比方说通过注解来配置请求参数,通过…

Java中的证书透明度验证

因此,我有一个幼稚的想法,即除了证书有效性检查(在Java中)之外,将证书透明性验证作为每个请求的一部分也很容易。 牺牲了整个周末的一半时间,我可以证明这并不是一件小事。 但是, 证书透明性是…

[渝粤教育] 西南科技大学 电子商务原理及应用 在线考试复习资料

电子商务原理及应用——在线考试复习资料 一、单选题 1.( )接受商家的送货要求,将商品送到消费者手中。 A.邮局 B.快递公司 C.送货公司 D.物流中心 2.卓越属于( )类型的B2C电子商务企业: A.经营着离线商店的零售商 B.没有离线商店的虚拟零售企业 C.商品制造商 D.网络交易服务公…

如何判断光纤收发器是否有问题?

一般情况下,光纤收发器或光模块的发光功率如下:多模在10db--18db之间;单模20公里在-8db--15db之间;而单模60公里则在-5db--12db之间。但如是光纤收发器的发光功率出现在-30db--45db之间,那么,很有可能这个光…

[渝粤教育] 西南科技大学 经济数学1 在线考试复习资料

经济数学1——在线考试复习资料 一、单选题 1.求曲线在点处的切线方程( )。 A. B. C. D. 2.求函数的导数( )。 A. B. C. D. 3.设(都是常数),则( )。 A.0 B. C. D. 4.如果函数在区间上的导数( ),那么在区间上是一个常数( )。 A.恒为常数 B.可能为常数 C.恒为零 5.设,则( )。…

matlab 列表 剪切,利用Matlab进行文件批量复制、剪切和修改文件名

文件批量复制、剪切和修改文件名电脑环境文件批量复制文件批量剪切批量修改文件名批量修改文件名和复制(剪切)电脑环境MATLAB:2018aWindows:win10文件批量复制close all;clear all;clc;%目的文件目录DST_PATH_t C:\Users\fatflower\Desktop\2018BBC精听…

[渝粤教育] 西南科技大学 行政法学与行政诉讼法学 在线考试复习资料

行政法学与行政诉讼法学——在线考试复习资料 一、单选题 1.某省工商局与税务局联名对某公司作出处罚,吊销其营业执照,罚款100万元。该公司提起复议,复议机关是( ) A.国家工商总局 B.国家税务总局 C.国务院 D.省政府 2.行政相对人对下列行为不能申请行政复议的是哪一种?( ) A…

activemq 实例_在一台计算机上运行多个ActiveMQ实例

activemq 实例几周前,我再次通过Mule ESB解决方案将Apache ActiveMQ用作JMS提供程序。 由于使用ActiveMQ已经有几年了,所以我认为最好检查一些(新)功能,例如故障转移传输和其他群集功能 。 为了能够测试这些最后的东西…

什么是光纤收发器?光纤收发器作用是什么?

许多朋友一听到光纤收发器这五个大字总会有困惑,比如说什么是光纤收发器,光纤收发器又有什么作用等等疑问。那么,什么是光纤收发器呢?光纤收发器又有什么作用呢?接下来我们就跟随飞畅科技的小编一起来详细了解下吧&…

[渝粤教育] 西南科技大学 质量与可靠性管理 在线考试复习资料

质量与可靠性管理——在线考试复习资料 一、单选题 1.下列关于PDCA的内容说法正确的是( ) A.第一阶段进行申请、提交项目等 B.第二阶段按计划实地去做,去落实具体对策。 C.第三阶段实施标准化,以后就按标准进行,该阶段是实施PDCA的关键。 D.第四阶段对策实施后,把握对策的效果 …

php网站点击按钮更新程序,php页面 点击按钮执行更新操作

代码如下:此页面名称为updateScoreNew.php,点击按钮后获得id和score,然后执行更新数据库操作,不知道怎么写,点击按钮怎么都不调用方法,愁死了都。。。 html head ?php if(isset($_POST[update])) { echo &…

【渝粤教育】电大中专品牌管理与推广_1作业 题库

1.品牌是产品或商品的牌子,而商标是商家和商品的标志,是商品经济发展到一定阶段的产物。该说法() A.正确 B.错误 正确 正确答案:左边查询 学生答案:A 2.企业品牌化,是指品牌的核心不是个别的产品…

在15分钟内使用Spring Boot和Spring Security构建一个Web应用程序

“我喜欢编写身份验证和授权代码。” 〜从来没有Java开发人员。 厌倦了一次又一次地建立相同的登录屏幕? 尝试使用Okta API进行托管身份验证,授权和多因素身份验证。 开发人员知道保护Web应用程序安全可能会很麻烦。 正确地做是很难的。 最糟糕的是&…