代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
PHP
】
php缓存类
作者:
路过的指针
/ 发布于
2013/9/2
/
1384
php缓存类 $oFC = new FileCache(); $sKey = 'ab_123'; $data = $oFC -> get($sKey); if (is_null($data)) $oFC -> set($sKey, array('name' => 'ttt', 'datetime' => date('Y-m-d H:i:s')), 100000); print_r($data);
<?php final class FileCache { /** * * * 缓存目录 * * * @var string */ private static $msCachePath = null; /** * * * 默认缓存失效时间(1小时) * * * @var int */ const miEXPIRE = 3600; /** * * * 构造 * self::$msCachePath 缓存目录为共享目录 * * * @param string $sCachePath */ function __construct($sCachePath = './tmp/') { if (is_null(self :: $msCachePath)) self :: $msCachePath = $sCachePath; } /** * * * 读取缓存 * 返回: 缓存内容,字符串或数组;缓存为空或过期返回null * * * @param string $sKey 缓存键值(无需做md5()) * * @return string | null * * @access public */ public function get($sKey) { if (empty($sKey)) return false; $sFile = self :: getFileName($sKey); if (!file_exists($sFile)) return null; else { $handle = fopen($sFile, 'rb'); if (intval(fgets($handle)) > time()) { // 检查时间戳 { //未失效期,取出数据 $sData = fread($handle, filesize($sFile)); fclose($handle); return unserialize($sData); } else { // 已经失效期 fclose($handle); return null; } } } /** * 写入缓存 * * * * @param string $sKey 缓存键值 * * @param mixed $mVal 需要保存的对象 * * @param int $iExpire 失效时间 * * @return bool * @access public */ public function set($sKey, $mVal, $iExpire = null) { if (empty($sKey)) return false; $sFile = self :: getFileName($sKey); if (!file_exists(dirname($sFile))) if (!self :: is_mkdir(dirname($sFile))) return false; $aBuf = array(); $aBuf[] = time() + ((empty($iExpire)) ? self :: miEXPIRE : intval($iExpire)); $aBuf[] = serialize($mVal); /** * 写入文件操作 */ $handle = fopen($sFile, 'wb'); fwrite($handle, implode("\n", $aBuf)); fclose($handle); return true; } /** * * * 删除指定的缓存键值 * * * @param string $sKey 缓存键值 * @return bool */ public function del($sKey) { if (empty($sKey)) return false; else { @unlink (self :: getFileName($sKey)); return true; } } /** * * * 获取缓存文件全路径 * 返回: 缓存文件全路径 * $sKey的值会被转换成md5(),并分解为3级目录进行访问 * * * @param string $sKey 缓存键 * * @return string * @access protected */ private static function getFileName($sKey) { if (empty($sKey)) return false; $key_md5 = md5($sKey); /** * $aFileName = array(); * $aFileName[] = rtrim(self :: $msCachePath, '/'); * $aFileName[] = $key_md5{0} . $key_md5{1}; * $aFileName[] = $key_md5{2} . $key_md5{3}; * $aFileName[] = $key_md5{4} . $key_md5{5}; * $aFileName[] = $key_md5; */ return self :: $msCachePath . '/' . $key_md5; // return implode('/', $aFileName); } /** * * * 创建目录 * * * * @param string $sDir * @return bool */ private static function is_mkdir($sDir = '') { if (empty($sDir)) return false; /** * 如果无法创建缓存目录,让系统直接抛出错误提示 */ echo $sDir; if (!mkdir($sDir, 0666)) return false; else return true; } }
试试其它关键字
缓存类
同语言下
.
用net匹配并替换iOS标准的emoji表情符号
.
处理带Emoji表情的的字符串
.
获取微信昵称时 过滤特殊字符
.
通过判断上传文件的头字符来判断文件的类型
.
模拟百度URL加密解密算法
.
以太坊检查地址是否合法
.
实现crontab解析类
.
获取每个月的开始和结束时间
.
图片上传工具类
.
APP手机应用信息采集
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
路过的指针
贡献的其它代码
(
2
)
.
php缓存类
.
string分割
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3