热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

php中文件缓存实现程序代码

php文件缓存就是指把缓存生成一个文件,这个文件可以是php,txt等等文件,当我下载访问时就来判断访问上次生成时间,如果超过了我们指定的时间再重新生成一次,否则就直接调用缓存文件,这样就可以减...
php文件缓存就是指把缓存生成一个文件,这个文件可以是php,txt等等文件,当我下载访问时就来判断访问上次生成时间,如果超过了我们指定的时间再重新生成一次,否则就直接调用缓存文件,这样就可以减少了对mysql数据库的查询了.

php文件缓存原理

把需要缓存的数据通过serialize函数序列化后直接保存到文件,在需要使用缓存数据的时候,通过反序列化读入文件内容并复制给需要的变量,然后使用,不经常改动的数据可以写入缓存文件.

php文件缓存实例,代码如下:

index.php
 'qzp',
    'area_name' => 'admin',
    'mp_name' => '1234',
    'gh_name' => '5678'
);
writeCache($cacheFile, $info);
cache . func . php文件function arrayeval($array, $level = 0) {
    $space = '';
    for ($i = 0; $i <= $level; $i++) {
        $space.= "t";
    }
    $evaluate = "Arrayn$space(n";
    $comma = $space;
    foreach ($array as $key => $val) {
        $key = is_string($key) ? &#39;&#39;&#39;.addcslashes($key, &#39;&#39;&#39;) . &#39;&#39;&#39; : $key; 
        $val = !is_array($val) && (!preg_match("/^-?[1-9]d*$/", $val) || strlen($val) > 12) ? &#39;&#39;&#39; . addcslashes($val, &#39;&#39;&#39;).&#39;&#39;&#39; : $val;
        if (is_array($val)) {
            $evaluate.= "$comma$key => " . arrayeval($val, $level + 1);
        } else {
            $evaluate.= "$comma$key => $val";
        }
        $comma = ",n$space";
    }
    $evaluate.= "n$space)";
    return $evaluate;
}
function getCacheFileByID($id, $pre = &#39;info/&#39;, $md5 = true) {
    if ($md5) {
        $md5id = md5($id);
        return CACHE_ROOT . &#39;/&#39; . $pre . substr($md5id, 0, 2) . &#39;/&#39; . substr($md5id, 2, 2) . &#39;/&#39; . $id;
    } else {
        return CACHE_ROOT . &#39;/&#39; . $pre . $id;
    }
}
function readCache($filename, $time = 0) {
    if ($datas = @file_get_contents($filename)) {
        $datas = unserialize($datas);
        if ($time <1 || (time() - $datas[&#39;time&#39;] <$time)) {
            return $datas[&#39;data&#39;];
        }
    }
    return false;
}
function writeCache($filename, $data) {
    makeDir(dirname($filename));
    if ($handle = fopen($filename, &#39;w+&#39;)) {
        $datas = array(
            &#39;data&#39; => $data,
            &#39;time&#39; => time()
        );
        flock($handle, LOCK_EX);
        $rs = fputs($handle, serialize($datas));
        flock($handle, LOCK_UN);
        fclose($handle);
        if ($rs !== false) {
            return true;
        }
    }
    return false;
}
function makeDir($path) {
    if (!file_exists($path)) {
        makeDir(dirname($path));
        if (!mkdir($path, 0777)) die(&#39;无法创建文件夹&#39; . $path);
    }
}
?>

把要缓存的文件序列化下存放起来,当使用的时候反序列化回来使用,使用对PHP模板数据进行缓存的工具smarty,smarty将HTML文件缓存成一个静态的HTML页,需要缓存的模板文件可以使用smarty.

例,代码如下:

caching = true;
//指定缓存文件保存的目录
$smarty->cache_dir = "./cache/";
//也会把输出保存
$smarty->display(&#39;index.tpl&#39;)


教程地址:

欢迎转载!但请带上文章地址^^

推荐阅读
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
  • Monkey《大话移动——Android与iOS应用测试指南》的预购信息发布啦!
    Monkey《大话移动——Android与iOS应用测试指南》的预购信息已经发布,可以在京东和当当网进行预购。感谢几位大牛给出的书评,并呼吁大家的支持。明天京东的链接也将发布。 ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • Oracle Database 10g许可授予信息及高级功能详解
    本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文由编程笔记小编整理,介绍了PHP中的MySQL函数库及其常用函数,包括mysql_connect、mysql_error、mysql_select_db、mysql_query、mysql_affected_row、mysql_close等。希望对读者有一定的参考价值。 ... [详细]
  • 数据库(外键及其约束理解)(https:www.cnblogs.comchenxiaoheip6909318.html)My ... [详细]
  • yum安装_Redis —yum安装全过程
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Redis—yum安装全过程相关的知识,希望对你有一定的参考价值。访问https://redi ... [详细]
author-avatar
我是王瑀
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有