您现在的位置是: 网站首页> PHP> ThinkPHP ThinkPHP
ThinkPHP6.0 缓存配置实现跨应用缓存
Smile 2020-09-24 11:36:31 PHP ThinkPHP 阅读:2657
简介默认情况下,ThinkPHP6.0文件缓存数据是区分不同应用的,比如在admin应用下做了缓存,在index应用中并不能去读取admin应用中做的缓存,要想实现跨应用缓存必须在config/cache.php配置文件中设置一个统一的数据缓存path目录
1、打开config/cache.php配置文件,配置path参数如下
<?php
use think\facade\Env;
// +----------------------------------------------------------------------
// | 缓存设置
// +----------------------------------------------------------------------
return [
// 默认缓存驱动
'default' => Env::get('cache.driver', 'file'),
// 缓存连接方式配置
'stores' => [
'file' => [
// 驱动方式
'type' => 'File',
// 缓存保存目录
'path' => '../runtime/cache/',
// 缓存前缀
'prefix' => '',
// 缓存有效期 0表示永久缓存
'expire' => 0,
// 缓存标签前缀
'tag_prefix' => 'tag:',
// 序列化机制 例如 ['serialize', 'unserialize']
'serialize' => [],
],
// 更多的缓存连接
],
];
- type:缓存类型
- path:设置不同的缓存保存目录
- expire:缓存有效期 (默认为0 表示永久缓存)
- prefix:缓存前缀(默认为空)
- serialize:缓存序列化和反序列化方法
这样就可以实现跨应用缓存了,但是这样配置会引发一个新的问题,那就是在执行自定义指令时,如果也想要实现跨应用缓存,那显然是不行的,因为指令文件think在项目根目录下,而入口文件在public目录下,所以../runtime/cache/这样配置会导致执行自定义指令时读取不到缓存数据,显然这不是我们想要的结果,所以更改为如下配置即可
return [
// 默认缓存驱动
'default' => Env::get('cache.driver', 'file'),
// 缓存连接方式配置
'stores' => [
'file' => [
// 驱动方式
'type' => 'File',
// 缓存保存目录
'path' => app()->getRootPath() . 'runtime/cache',
// 缓存前缀
'prefix' => '',
// 缓存有效期 0表示永久缓存
'expire' => 0,
// 缓存标签前缀
'tag_prefix' => 'tag:',
// 序列化机制 例如 ['serialize', 'unserialize']
'serialize' => [],
],
// 更多的缓存连接
],
];
注:app()->getRootPath():获取项目根目录路径
2、新版的缓存支持多通道,你可以事先定义好所有的缓存类型及配置参数,然后在使用的时候可以随时切换。默认使用的是文件缓存类型,你可以添加redis缓存支持,例如:
return [
'default' => 'file',
'stores' => [
// 文件缓存
'file' => [
// 驱动方式
'type' => 'file',
// 设置不同的缓存保存目录
'path' => app()->getRootPath() . 'runtime/cache',
],
// redis缓存
'redis' => [
// 驱动方式
'type' => 'redis',
// 服务器地址
'host' => '127.0.0.1',
//端口号
'port' => '6379',
//密码,没有则留空
'password' => '',
//缓存有效时间
'timeout' => 3600
],
],
];
很赞哦! (0)