您现在的位置是: 网站首页> PHP> ThinkPHP ThinkPHP

ThinkPHP6.0 缓存配置实现跨应用缓存

Smile 2020-09-24 PHP ThinkPHP 阅读:204

简介默认情况下,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)

文章评论

站点信息