php高效文件缓存类,常见php数据文件缓存类汇总

常见php数据文件缓存类汇总

发布于 2015-10-26 19:27:13 | 110 次阅读 | 评论: 0 | 来源: 网友投递

PHP开源脚本语言PHP(外文名: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,入门门槛较低,易于学习,使用广泛,主要适用于Web开发领域。PHP的文件后缀名为php。

这篇文章主要介绍了常见php数据文件缓存类,实例讲述了php文件缓存与利用memcache来缓存数据的方法,代码封装性好,使用简单,是非常实用的技巧,需要的朋友可以参考下

本文实例汇总了常见php数据文件缓存类。分享给大家供大家参考。具体分析如下:

数据文件缓存的做法我们常用的有php文件缓存与利用memcache来缓存数据,下面面我分别总结了memcache缓存数据与数据文件缓存。感兴趣的朋友可以参考一下。

1.对于一般的变量,把该变量变成php语言的格式,写到文件中,用时只要include这个文件就相当于加载了cache了.

2.对于array型的变量,把array转化为php语言定义array的字符串,写到文件中,用时也只要include就相当于加载了cache了.

3.缓存cache时间上的控制,通过获取缓存文件的创建时间和现在的时间进行对比,如果没有到更新时间,直接读取缓存,如果到了更新时间,查询数据库.

文件缓存类,代码如下:

代码如下:

class DataCache

{

/**

* 数组转换

*

* @param array $array

* @param string $arrayName

* @param array $level

*

* @return string

*/

private function arrayEval($array, $arrayName = '', $level = 0)

{

$space = str_repeat("t", $level);

if (emptyempty($arrayName))

{

$evaluate = "arrayn$space(n";

}

else

{

$evaluate = "${$arrayName} = arrayn$space(n";

}

$space2 = str_repeat("t", $level + 1);

$comma = $space2;

if (!emptyempty($array))

{

foreach ($array as $key => $val)

{

$key = is_string($key) ? ''' . addcslashes($key, ''') . ''' : $key;

$val = !is_array($val) && (!preg_match('/^-?[1-9]d*$/', $val) || strlen($val) > 12) ? ''' . addcslashes($val, ''') . ''' : $val;

if (is_array($val))

{

$evaluate .= "$comma$key => " . arrayEval($val, '', $level + 1);

}

else

{

$evaluate .= "$comma$key => $val";

}

$comma = ",n$space2";

}

}

$evaluate .= "n$space)";

// 最后才需要一个“;”

if ($level == 0)

{

$evaluate .= ";";

}

return $evaluate;

}

/**

* 写入缓存

*

* @param string $path

* @param string $arrayName

* @param array  $data

*

* @return boolean

*/

public static function writeCache($path, $arrayName, $data)

{

if ($handle = fopen($path, 'w+'))

{

$data = self::arrayEval($data, $arrayName);

$dataConvert = "<?phpn " . $data;

flock($handle, LOCK_EX);

$rs = fputs($handle, $dataConvert);

flock($handle, LOCK_UN);

fclose($handle);

if ($rs !== false)

{

return true;

}

}

return false;

}

}

?>

调用方法,代码如下:

代码如下:

/**

* 生成文件缓存

*

* @param string $filePath 缓存文件的保存路径

* @param string $arrayName 存放在缓存文件中的数组名称

* @param array $data 数据

*

* @return boolean

*/

DataCache::writeCache($filePath, $arrayName, $data);

memcache来缓存数据,这里提供这个文件缓存的类,代码如下:

代码如下:

/**

* 文件缓存类

* 提供文件缓存

*/

class Cache_FileCache{

/**

* 设置缓存

* @param $key 缓存的关键字key

* @param $data 缓存的内容

* @param $cacheLife 缓存时间(单位为秒)如果为0 则表示无限时间

* @return Bool

*/

public static function setCache($key,$data,$cacheLife)

{

if(file_exists(__SITE_FILE_CACHE))

{

@$file                =  __SITE_FILE_CACHE . "/" . $key .".php";

$cache                  =  array();

$time                =  __SYS_TIME;

$cache['content']    =  $data;

$cache['expire']    =  $cacheLife === 0 ? 0 : $time+$cacheLife;

$cache['mtime']        =  $time;

$cache                =  serialize($cache);

$setReslut            =  @file_put_contents($file,$cache) or self::error(__line__,"文件写入出错");

$chmodReslut        =  @chmod($file,0777) or self::error(__line__,"设定文件权限失败");

if($setReslut && $chmodReslut)

{

return true;

}

else

{

return false;

}

}

}

/**

* 得到缓存数据

* @param $key 缓存的关键字key

* @return array

*/

public static function getCache($key)

{

@$file                =      __SITE_FILE_CACHE . "/" . $key .".php";

if(file_exists($file))

{

$data        =    @file_get_contents($file);

$data        =   unserialize($data);

if($data['expire']==0 || $data['expire'] > __SYS_TIME)

{

return $data['content'];

}

else

{

unlink($file);

return array();

}

}

}

/**

* 删除缓存文件

* @param $key 缓存$key

* @return Bool

*/

public static function delCache($key)

{

if (@unlink(__SITE_FILE_CACHE."/".$key.".php"))

{

return true;

}

else

{

return false;

}

}

/**

* 清除所有缓存文件

* @return Bool

*/

public static function clearAllCache()

{

$files = scandir(__SITE_FILE_CACHE);

foreach ($files as $val)

{

@unlink(__SITE_FILE_CACHE."/".$val);

}

}

/**

* 出错处理函数

* @param $line 行数

* @param $msg  信息

*/

public static function error($line,$msg)

{

die("出错文件:".__file__."/n出错行:$line/n错误信息:$msg");

}

}

?>

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

相关阅读:

常见php数据文件缓存类汇总

php文件缓存类汇总

PHP文件缓存类示例分享

php文件缓存类用法实例分析

PHP文件缓存类实现代码

PHP常用的缓存技术汇总

PHP中文件缓存转内存缓存的方法

php常用文件操作函数汇总

PHP静态文件生成类实例

php静态文件生成类实例分析

ThinkPHP文件缓存类代码分享

PHP编程文件处理类SplFileObject和SplFileInfo用法实例分析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值