php 自带缓存,封装ThinkPhP自带的缓存机制

namespace Home\Controller;

use Think\Controller;

use Think\Think;

/**

* @param string $cache_folder 缓文件夹

* @param int $cache_create_time 文件缓存时间

* @example $cache->read_cache() 读取缓存并输出

* @example $cache->create_cache() 创建缓存文件(放在文件未尾)

* @example $cache->list_file() 返回所有缓存文件列表

* @example $cache->del_file() 删除所有缓存文件

*/

class CacheController extends Controller {

private $cache_folder = null; //cacher文件夹

private $wroot_dir = null; //站点目录

private $cacher_create_time = null; //cacher文件的建立时间

private $id = null;

public function chushi($cache_foldername,$id) {

ob_start();

$this->wroot_dir = $_SERVER['DOCUMENT_ROOT'];

$this->cache_folder = $cache_foldername;

$this->cacher_create_time=C('CON_TIME');

$this->id=$id;

}

public function read_cache() {

try {

if (self::create_folder($this->cache_folder)) {

self::get_cache(); //输出缓存文件信息

} else {

echo "缓存文件夹创建失败!";

return false;

}

} catch (Exception $e) {

echo $e;

return false;

}

}

//测试缓存文件夹是否存在

private function exist_folder($foler) {

if (file_exists($this->wroot_dir . "/" . $foler)) {

return true;

} else {

return false;

}

}

//建立一个新的文件夹

private function create_folder($foler) {

if (!self::exist_folder($foler)) {

try {

mkdir($this->wroot_dir . "/" . $foler, 0777);

chmod($this->wroot_dir . "/" . $foler, 0777);

return true;

} catch (Exception $e) {

self::get_cache(); //输出缓存

return false;

}

return false;

} else {

return true;

}

}

//读取缓存文件

private function get_cache() {

$file_name = self::get_filename();

if (file_exists($file_name) && ((filemtime($file_name) + $this->cacher_create_time) > time())) {

$content = file_get_contents($file_name);

if ($content) {

echo $content;

ob_end_flush();

exit;

} else {

echo "文件读取失败";

exit;

}

}

}

//返回文件的名字

private function get_filename() {

$filename = $file_name = $this->wroot_dir . '/' . $this->cache_folder . '/' . $this->id . ".html";

return $filename;

}

//建立缓存文件

public function create_cache() {

$filename = self::get_filename();

if ($filename != "") {

try {

file_put_contents($filename, ob_get_contents());

return true;

} catch (Exception $e) {

echo "写缓存失败:" . $e;

exit();

}

return true;

}

}

// 取得缓存中的所有文件

public function list_file() {

$path = $this->cache_folder;

if ($handle = opendir($path)) {

while (false !== ($file = readdir($handle))) {

if ($file != "." && $file != "..") {

$path1 = $path . "/" . $file;

if (file_exists($path1)) {

$result[] = $file;

}

}

}

closedir($handle);

}

return $result;

}

//删除缓存中的所有文件

public function del_file() {

$path = $this->cache_folder;

if ($handle = opendir($path)) {

while (false !== ($file = readdir($handle))) {

if ($file != "." && $file != "..") {

$path1 = $path . "/" . $file;

if (file_exists($path1)) {

unlink($path1);

}

}

}

closedir($handle);

}

return true;

}

}

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

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

相关文章

等高线的认识

contour: 轮廓;等高线。是三维图像信息在二维坐标平面上的投影。但其仍维护着三维信息,比如使用特殊的颜色标出(不同高度含义的曲线)。 1. 等高线的意义 利用 xy 平面内的等高线,可以给出函数 uf(x,y) 的另…

java替换list中元素,Java 实例 - List 元素替换

以下实例演示了如何使用 Collections 类的 replaceAll() 来替换List中所有的指定元素: /*author by shouce.renMain.java*/import java.util.*;public class Main {public static void main(String[] args) {List list Arrays.asList("one Two three Four fiv…

mysql 常用命令(一)

1. 函数向日期添加指定的时间间隔 DATE_ADD(date,INTERVAL expr type)eg:DATE_ADD(CURDATE(),INTERVAL 1 MONTH) //在当前时间加一个月 2.计算年龄 eg:select birth ,CURDATE, YEAR(CURDATE())-YEAR(birth) - (RIGHT(MONTH(CURDATE)&#xff0c;&#xff15;) < &#xff32…

php钓鱼怎么使用方法,盘钩使用方法

中钓网资深钓友为大家分享盘钩的使用方法&#xff0c;很难跑鱼的钓鱼新武器——盘钩。盘钩&#xff0c;老瞿最新专利&#xff0c;刚刚开发出来。经过两年的实践&#xff0c;效果大大地好&#xff0c;钩子多&#xff0c;吃进去&#xff0c;要吐出来就难了。管它什么鱼&#xff0…

SQL Server-聚焦APPLY运算符(二十七)

前言 其实有些新的特性在SQL Server早就已经出现过&#xff0c;但是若非系统的去学习数据库你会发现在实际项目中别人的SQL其实是比较复杂的&#xff0c;其实利用新的SQL Server语法会更加方便和简洁&#xff0c;从本节开始我们将讲述一些SQL Server中早已出现的新语法&#xf…

php中的解析范围符,如何合理使用php7范围解析操作符

class Base{const mynum1111;//基类常量public static $num11;//基类静态成员变量public $namebase zhangsan;//基类普通成员变量public function hi(){//普通成员函数echo base普通方法-调用自己的常量.self::mynum.;//1111echo base普通方法-调用自己的静态成员变量.self::$n…

php项目课题,php课题

异步调用 功能说明 桶相关接口和对象相关接口均支持以“Async”结尾的方式进行异步调用(例如&#xff0c;同步方法为ObsClient->putObject&#xff0c;则异步方法为ObsClient->putObjectAsync)。异步调用完成后会将返回结果输出到回调函数中&#xff0c;回调函数依次包含…

vs2013和vs2010的配置

win10下vs2013和vs2010的相关配置 ------made by siwuxie095 主要是推荐一些vs2013和vs2010的好用的插件和配色方案&#xff0c;下面主要是以vs2013示例 1、首先是配色方案&#xff0c;一般情况下安装好了IDE之后&#xff0c;为了护眼&#xff0c;都是直接调成了暗色调或深色…

php 伪静态是什么意思,路由与伪静态

## 路由与伪静态### 路由>[info] 字面上解释&#xff0c;路是线路&#xff0c;道路&#xff1b;由&#xff0c;缘由&#xff0c;指意&#xff0c;表示规则&#xff1b;所以意思就是按照什么规则&#xff0c;或者意义&#xff0c;被指派到什么地方去。所以路由是指线路分发&a…

MFC编程入门之十三(对话框:属性页对话框及相关类的介绍)

前面讲了模态对话框和非模态对话框&#xff0c;本节来将一种特殊的对话框——属性页对话框。 属性页对话框的分类 属性页对话框想必大家并不陌生&#xff0c;XP系统中桌面右键点属性&#xff0c;弹出的就是属性页对话框&#xff0c;它通过标签切换各个页面。另外&#xff0c;我…

Linux用户与“最小权限”原则

作者&#xff1a;Vamei 出处&#xff1a;http://www.cnblogs.com/vamei 欢迎转载&#xff0c;也请保留这段声明。谢谢&#xff01; 作为一个Linux用户来说&#xff0c;我们并不需要特别关心下面的机制。但是&#xff0c;当我们去编写一个Linux应用程序的时候&#xff0c;就要注…

js urlencode 20 php,js实现php函数urlencode

本文介绍了php函数urlencode的js实现方法并比较js和php各编码函数的区别。 通常form表单的enctype类型为 application/x-www-form-urlencoded, 当表单提交后&#xff0c;提交的数据自动被编码&#xff0c; 规则为 除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两…

.NET CORE在ubuntu1604上运行

本文主要描述.NET CORE在Ubuntu上“自包含应用”不一来.NET SDK发布&#xff08;类似于golang的方式&#xff09; 1.用rider或者直接用dotnet new方式创建一个项目&#xff1b;可以看到产生了两个文件 dotnet new 会创建一个最新的 project.json 文件&#xff0c;其中包含生成控…

php代码审计靶场,代码审计 | Wavsep靶场审计防御

—————— 昨日回顾 ——————红日安全出品|转载请注明来源文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用&#xff0c;任何人不得将其用于非法用途以及盈利等目的&#xff0c;否则后果自行承担&#xff01;(来源&#xff1a;红日安全)—————— ——…

Python 爬虫抓取代理IP,并检测联通性

帮朋友抓了一些代理IP&#xff0c;并根据测试联的通性&#xff0c;放在了不通的文件夹下。特将源码分享 注意&#xff1a; 1&#xff0c;环境Python3.5 2&#xff0c;安装BeautifulSoup4 requests 代码如下: 123456789101112131415161718192021222324252627282930313233343536…

php gps坐标转换经纬度,GPS坐标(经纬度转换xy坐标算法)

我用GPS-DG16测得某地的经纬度&#xff0c;然后想将该经纬度转换为80坐标系的经纬。1.看你的精度要求&#xff0c;如果厘米级的&#xff0c;则需要至少3个已知点&#xff0c;这3个点上要有80坐标系的经纬度&#xff0c;另外你再去用gps-dg16采集这三个点的wgs84经纬度&#xff…

java初始化顺序

原文地址http://blog.sina.com.cn/s/blog_4cc16fc50100bjjp.html对于静态变量、静态初始化块、变量、初始化块、构造器&#xff0c;它们的初始化顺序依次是&#xff08;静态变量、静态初始化块&#xff09;>&#xff08;变量、初始化块&#xff09;>构造器。我们也可以通…

php审批流设计思路,审批流设计器-字段说明

1.允许转发&#xff1a;勾选&#xff0c;则在信息中心处理此审批动作对应的待处理任务时&#xff0c;可以将此任务转发给其他用户&#xff1b;不勾选&#xff0c;则在信息中心的待处理任务不支持转发功能&#xff0c;点击转交提示&#xff1a;审批动作设置为不允许转发。2.允许…

第一百二十六节,JavaScript,XPath操作xml节点

第一百二十六节&#xff0c;JavaScript&#xff0c;XPath操作xml节点 学习要点&#xff1a; 1.IE中的XPath 2.W3C中的XPath 3.XPath跨浏览器兼容 XPath是一种节点查找手段&#xff0c;对比之前使用标准DOM去查找XML中的节点方式&#xff0c;大大降低了查找难度&#xff0c;方便…

matlab 控制实验指导,智能控制系统-实验指导书-实验一-BP算法的MATLAB实现

实验一、BP算法的MATLAB实现一、实验目的1、了解MATLAB集成开发环境2、了解MATLAB编程基本方法3、加深对&#xff22;&#xff30;算法的理解和掌握二、实验内容1、MATLAB基本指令和语法。2、&#xff22;&#xff30;算法的MATLAB实现三、实验步骤1、熟悉MATLAB开发环境2、输入…