php怎样数据缓存文件,几个简单的php数据文件缓存类

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 (empty($arrayName))

{

$evaluate = "arrayn$space(n";

}

else

{

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

}

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

$comma = $space2;

if (!empty($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来缓存数据

面提供这个文件缓存的类,希望大家可以看看。

 代码如下

/**

* 文件缓存类

* 提供文件缓存

* @author guoyubin(263421949@qq.com)

*/

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");

}

}

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值