实现简单的文件缓存,参照CI的部分设计,在这里记录一下子。

class File
{
const CACHE_PATH = 'nil_file_cache'; /*其他函数省略了*/ /**
* 获取缓存文件.
*
* @param string $key 缓存名.
*
* @return string|false
*/
private static function getCacheFile($key)
{
return (empty($key))
? false
: NIL_DATA_PATH.DIRECTORY_SEPARATOR.self::CACHE_PATH.DIRECTORY_SEPARATOR.$key.'.bin';
} /**
* 删除缓存文件.
* 存在就删除
*
* @param string $key 缓存名.
*
* @return null
*/
public static function cacheDelete($key)
{
/*缓存文件*/
$file = self::getCacheFile($key); if( is_file($file) )
{
@unlink($file);
}
} /**
* 获取缓存.
*
* @param string $key 缓存名.
*
* @return mixed|false 结果
*/
public static function cacheGet($key)
{
/*缓存文件*/
$file = self::getCacheFile($key);
if( ! is_file($file) )
{
return false;
} /*读取*/
$data = @file_get_contents($file);
if($data === false)
{
return false;
} /*序列化*/
$data = @unserialize($data); /*定义基本的值 未过期*/
if( ! isset($data['ttl'],$data['time'],$data['data']) || ($data['ttl'] > 0 && time() > $data['time'] + $data['ttl']) )
{
@unlink($file);
return false;
} /*返回*/
return $data['data'];
} /**
* 生成缓存.
*
* @param string $key 缓存名.
* @param mixed $data 数据.
*
* @return bool 是否成功
*/
public static function cacheSave($key, $data, $time = 0)
{
/*路径*/
$path = self::getCacheFile($key);
if(false === $path)
{
return false;
} /*组合数据*/
$d = [
'time' => time(),
'ttl' => $time,
'data' => $data
]; /*写入数据*/
if(self::write($path, serialize($d)))
{
@chmod($path, 0640);
return true;
} return false;
}
}

  

df

nilcms file类 简单文件缓存实现的更多相关文章

  1. c# 命令行下编译c#文件 // c# file类读写文件

    c# 命令行下编译c#文件 2010-03-01 15:02:14|  分类: c# 学习|字号 订阅     在 开始  ——>程序 ——>vstool中打开vs2008命令提示. 通过 ...

  2. 使用File类操作文件或目录的属性

    在学I/O流之前,我先总结一下使用File类操作文件或目录的属性. package com.File; import java.io.File; import java.io.IOException; ...

  3. 【转载】 C#通过File类实现文件拷贝复制的功能

    在Windows系统的使用过程中,一个较常使用的功能就是文件的复制拷贝操作,其实在C#开发中,也可以使用File类库中的Copy方法来实现文件的拷贝,支持设定原文件地址,以及拷贝复制后的文件存放路径. ...

  4. Java 之 File类(文件操作)

    一.概述 java.io.File 类是文件和目录路径名册抽象表示,主要用于文件和目录的创建.查找和删除等操作. File类是一个与系统无关的类,任何的操作系统都可以使用这个类中的方法. 路径问题: ...

  5. 九:File类,文件的操作

    File的常用方法:

  6. C#File类常用文件操作以及一个模拟的控制台文件管理系统

    重温一下C#中File类的一些基本操作: File类,是一个静态类,主要是来提供一些函数库用的. 使用时需要引入System.IO命名空间. 一.常用操作: 1.创建文件方法 //参数1:要创建的文件 ...

  7. C#中File类的文件操作方法详解

    File类,是一个静态类,主要是来提供一些函数库用的.静态实用类,提供了很多静态的方法,支持对文件的基本操作,包括创建,拷贝,移动,删除和打开一个文件.File类方法的参量很多时候都是路径path.F ...

  8. Java File类与文件IO流总结

    1.File类 File类被定义为“文件和目录路径名的抽象表示形式”,这是因为File类既可以表示“文件”也可以表示“目录”,他们都通过对应的路径来描述.通过构造函数创建一个File类对象,则该对象就 ...

  9. File类、文件过滤器、递归、文件及文件夹的操作方法

    一.File Io概述: 当需要把内存中的数据存储到持久化设备上这个动作称为输出(写)Output操作. 当把持久设备上的数据读取到内存中的这个动作称为输入(读)Input操作. 因此我们把这种输入和 ...

随机推荐

  1. Python之函数的递归、匿名函数、内置函数

    一.函数的递归 ''' 1 什么是函数递归 函数递归调用(是一种特殊的嵌套调用):在调用一个函数的过程中,又直接或间接地调用了该函数本身 递归必须要有两个明确的阶段: 递推:一层一层递归调用下去,强调 ...

  2. 微信小程序中的分享事件

    小程序的分享 onShareAppMessage(options)   在页面的js文件中定义了 onShareAppMessage 函数时,页面可以表示改页面可以转发.可以在函数中设置页面转发的信息 ...

  3. zabbix监控DELL服务器硬件状态

    zabbix监控DELL服务器硬件状态 登录dell服务的管理页面 默认用户名:root 密码:calvin 服务器开放snmp信息,开启完应用 Zabbix服务器导入dell监控硬件模板 验证 sn ...

  4. Java Comparator接口学习笔记

    Comparator是一个泛型函数式接口,T表示待比较对象的类型: @FunctionalInterface public interface Comparator<T> { } 本文将主 ...

  5. OpenSSH技术详解

    一.什么是Openssh  OpenSSH 是 SSH (Secure SHell) 协议的免费开源实现.SSH协议族可以用来进行远程控制, 或在计算机之间传送文件.而实现此功能的传统方式,如teln ...

  6. docker node项目 连接mongodb

    在弄docker部署node项目的时候遇到了连接mongdb的问题,记录一下问题解决办法 一.Docker 安装 MongoDB 1.查找Docker Hub上的mongo镜像 [root@VM_49 ...

  7. Hyperledger Fabric chaincode 开发(疑难解答)

    Q&A Q1: 使用fabric release 1.2 进行golang chaincode开发时报错: ..\..\hyperledger\fabric\vendor\github.com ...

  8. centos7.6 安装配置rabbitmq

    IP地址:192.168.200.108 安装erlang 和 依赖环境 yum install -y socat yum install -y erlang 安装rabbitmq yum insta ...

  9. 深度学习-tensorflow学习笔记(1)-MNIST手写字体识别预备知识

    深度学习-tensorflow学习笔记(1)-MNIST手写字体识别预备知识 在tf第一个例子的时候需要很多预备知识. tf基本知识 香农熵 交叉熵代价函数cross-entropy 卷积神经网络 s ...

  10. watch命令详解

    基础命令学习目录首页 原文链接:https://www.cnblogs.com/kaishirenshi/p/7727986.html watch 命令详解: author:headsen  chen ...