php 怎样数据缓存文件,PHP 实现文件缓存数组等数据

PHP 有Redis,Memcache等高速缓存,但是低端服务器可能就没有这些配置了,我们可以尝试着把经常用到的数据(如:数组、导航条、页面底部信息等)缓存到文件中,这样就能“快速的”获取相应的信息了。

以下是尝试的一部分代码:

// 自定义缓存

class YCache

{

// 从文件读取缓存

// 将 json 转换为普通格式

// key 要读取的键值

public static function get($key ,$options)

{

$reval = '';

$path = __DIR__ . './cache/';

if (is_array($options))

{

$baseOptions = self::setOptions([

'path' => $path,

] ,$options);

$path = $baseOptions['path'];

}

$file_name = $path.md5($key).'.txt';

//echo $file_name;die();

if (file_exists($file_name))

$reval = json_decode(file_get_contents($file_name),true);

else

$reval = null;

return $reval;

}

// 写入文件缓存

// 用 json 格式保存内容

// key 要保存的键值

// value 要保存的值

public static function set($key ,$value ,$options)

{

$path = __DIR__ . './cache/';

if (is_array($options))

{

$baseOptions = self::setOptions([

'path' => $path,

] ,$options);

$path = $baseOptions['path'];

}

$file_name = $path.md5($key).'.txt';

if(!file_exists(dirname($file_name)))

mkdir(dirname($file_name), 0555);

//echo $file_name;die();

file_put_contents($file_name , json_encode($value));

}

// 根据传入的参数更改相应的设定

// baseOptions 基础设定数组

// options 传入的设定数组

public static function setOptions($baseOptions ,$options)

{

if (! is_null($options['subPath']))

$baseOptions['path'] .= $options['subPath'] .'/';

return $baseOptions;

}

}

测试代码如下:

$arr = [

1 => [

'name' => '帮助',

'parent_id' => 0,

'namealias' => 'help',

'keywords' => 'chm,helper'

],

2 => [

'name' => '经验',

'parent_id' => 1,

'namealias' => 'exp',

'keywords' => 'exp,helper'

],

];

// 将数组存储到文件中

YCache::set('category_menu_with_zero',$arr ,['subPath' => 'category']);

读取数据:

$re = YCache::get('category_menu_with_zero' ,['subPath' => 'category']);

echo $re[2]['name'];

输出结果:

经验

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值