nilcms file类 简单文件缓存实现
实现简单的文件缓存,参照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类 简单文件缓存实现的更多相关文章
- c# 命令行下编译c#文件 // c# file类读写文件
c# 命令行下编译c#文件 2010-03-01 15:02:14| 分类: c# 学习|字号 订阅 在 开始 ——>程序 ——>vstool中打开vs2008命令提示. 通过 ...
- 使用File类操作文件或目录的属性
在学I/O流之前,我先总结一下使用File类操作文件或目录的属性. package com.File; import java.io.File; import java.io.IOException; ...
- 【转载】 C#通过File类实现文件拷贝复制的功能
在Windows系统的使用过程中,一个较常使用的功能就是文件的复制拷贝操作,其实在C#开发中,也可以使用File类库中的Copy方法来实现文件的拷贝,支持设定原文件地址,以及拷贝复制后的文件存放路径. ...
- Java 之 File类(文件操作)
一.概述 java.io.File 类是文件和目录路径名册抽象表示,主要用于文件和目录的创建.查找和删除等操作. File类是一个与系统无关的类,任何的操作系统都可以使用这个类中的方法. 路径问题: ...
- 九:File类,文件的操作
File的常用方法:
- C#File类常用文件操作以及一个模拟的控制台文件管理系统
重温一下C#中File类的一些基本操作: File类,是一个静态类,主要是来提供一些函数库用的. 使用时需要引入System.IO命名空间. 一.常用操作: 1.创建文件方法 //参数1:要创建的文件 ...
- C#中File类的文件操作方法详解
File类,是一个静态类,主要是来提供一些函数库用的.静态实用类,提供了很多静态的方法,支持对文件的基本操作,包括创建,拷贝,移动,删除和打开一个文件.File类方法的参量很多时候都是路径path.F ...
- Java File类与文件IO流总结
1.File类 File类被定义为“文件和目录路径名的抽象表示形式”,这是因为File类既可以表示“文件”也可以表示“目录”,他们都通过对应的路径来描述.通过构造函数创建一个File类对象,则该对象就 ...
- File类、文件过滤器、递归、文件及文件夹的操作方法
一.File Io概述: 当需要把内存中的数据存储到持久化设备上这个动作称为输出(写)Output操作. 当把持久设备上的数据读取到内存中的这个动作称为输入(读)Input操作. 因此我们把这种输入和 ...
随机推荐
- CSS快速入门-定位(position)
一.概述 CSS 定位 (Positioning) 属性允许你对元素进行定位. 定位的基本思想很简单,它允许你定义元素框相对于其正常位置应该出现的位置,或者相对于父元素.另一个元素甚至浏览器窗口本身的 ...
- fortran打开文件“” /dde错误
因为装了Intel Visual Fortran 之后又装了PGI的软件,结果打开fortran文件时候出现"" /dde错误 解决方法:打开注册表管理器,定位到如下键:Compu ...
- Python对中文的支持
在Python中,经常会出现中文,出现中文有时候会报错,这时候很多新手在处理中文编码的时候会有点不知所措. Python主要有2.x和3.x版本两个区别,在3.x版本中,已经支持中文直接开发,而不需要 ...
- TPO-21 C1 Find a building for orientation
TPO-21 C1 Find a building for orientation 第 1 段 1.Listen to a conversation between a student and a p ...
- 拦截器 应用详解--SpringMVC
在实际项目中,拦截器的使用是非常普遍的,例如在购物网站中通过拦截器可以拦截未登录的用户,禁止其购买商品,或者使用它来验证已登录用户是否有相应的操作权限等,Spring MVC提供了拦截器功能,通过配置 ...
- Spring学习(5):DI的配置
一. 一些概念 应用程序中说的依赖一般指类之间的关系. 泛化:表示类与类之间的继承关系.接口与接口之间的继承关系: 实现:表示类对接口的实现: 依赖:当类与类之间有使用关系时就属于依赖关系,不同于关 ...
- Gitlab CI-3.遇到的问题
五.遇到的问题 1. cannot validate certificate for x.x.x.x because it doesn't contain any IP SANs 报错信息:ERROR ...
- docker 部署 zookeeper+kafka 集群
主机三台172.16.100.61172.16.100.62172.16.100.63Docker 版本 当前最新版 # 部署zk有2种方法 ## 注意 \后不要跟空格 一 . 端口映射 172.16 ...
- Erlang数据类型的表示和实现(2)——Eterm 和立即数
Erlang 数据类型的内部表示和实现 Erlang 中的变量在绑定之前是自由的,非绑定变量可以绑定一次任意类型的数据.为了支持这种类型系统,Erlang 虚拟机采用的实现方法是用一个带有标签的机器字 ...
- tomcat安装及使用详解
常用软件安装及使用目录 资料链接:https://pan.baidu.com/s/1XOUlneFqt-_1tOLSmc-E1g 网盘分享的文件在此 1. Tomcat简介 Tomcat是一个 ...