phpcms使用redis存储session 作者:七棵菜 日期:2022-11-30 栏目:计算机分类:1 人气:476 php默认使用files存储session,phpcms通过`session_set_save_handler`使用`mysql`作为`session`存储介质,但是这增加了数据库压力。 下面介绍一下phpcms使用redis作为session存储介质的方法。 - 安装redis - php安装redis扩展 - 更改phpcms配置 `caches/configs/system.php`更改如下配置 ``` 'session_storage' => 'redis', ``` - 增加类文件,`phpcms/libs/classes/session_redis.class.php` ``` <?php /** * session redis 存储类 */ class session_redis { private $redis; private $sessionExpireTime = 3600 * 24; // 秒 public function __construct() { $this->redis = new Redis(); $this->redis->connect('127.0.0.1', 6379); // 连接redis $this->redis->auth('1234567'); // 密码验证 $this->redis->select(15); // 选择数据库 $flag = session_set_save_handler( array(&$this,'open'), array(&$this,'close'), array(&$this,'read'), array(&$this,'write'), array(&$this,'destroy'), array(&$this,'gc') ); ini_set("session.cookie_httponly", 1); session_start(); } public function open($path, $name) { return true; } public function close() { return true; } public function read($id) { $value = $this->redis->get($id); if ($value) { return $value; } else { return ""; } } public function write($id, $data) { if ($this->redis->set($id, $data)) { $this->redis->expire($id, $this->sessionExpireTime); // 设置过期时间 return true; } return false; } public function destroy($id) { if ($this->redis->delete($id)) { return true; } return false; } public function gc($maxlifetime) { return true; } } ?> ``` - 控制器中使用session前,实例化session_redis类 ``` $session_storage = 'session_' . pc_base::load_config('system', 'session_storage'); pc_base::load_sys_class($session_storage); ``` ### 鸣谢 - [csdn**hejinshan12 **](https://blog.csdn.net/hejinshan12/article/details/85534507) 标签: phpcms redis session 上一篇:如何使用mvn命令导入依赖 下一篇:微信上传图片调用wx.uploadImage无响应 随便看看 2024-02-19 PHP7 运算符“??” 和“?:”的区别 2022-11-30 Linux 后台运行命令 2022-11-25 关于我们 2022-11-30 centos一键系统安装lnmp集成环境 2022-11-30 linux 生成 ssh 公钥 留言