Laravel 会话使用 Memcached 踩到的坑
Posted Laravel资讯
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Laravel 会话使用 Memcached 踩到的坑相关的知识,希望对你有一定的参考价值。
前言
此文章相当于开发记录,希望能帮助遇到同样问题的同学,或在看了此篇文章后能避免犯同样的错误。
问题描述
之前项目开发时,SESSION_DRIVER
使用的是 redis
,后来为了分离逻辑,将其修改成 memcached
。
这时问题来了,配置修改后,用户无法正常登陆,表现为登陆成功后一刷新页面,又显示为 未登录
状态。
定位问题
针对此问题,当时专门做了几个排查步骤:
检查 memcached 服务是否启动;
检查 memcached 是否能正常存储数据;
检查 memcached 有无被其他设置覆盖;
结果上面的步骤均正常。这时突然想到会不会是 过期时间 设置有问题?
打开 config/session.php
文件一看果然如此:
之前开发的小伙伴为了能长久保持 Session,lifetime
值设置为了 525600
(即 1 年),而 memcached
默认的过期时间则 不能大于 30 天!
最终将 lifetime
的值修改为默认值 43200
(1440 * 30)即可。
附录
Memcache maximum key expiration time
以上是关于Laravel 会话使用 Memcached 踩到的坑的主要内容,如果未能解决你的问题,请参考以下文章
使用 Redis 与 memcached+db 作为 Django 会话系统的优缺点?