wordpress不使用php $_session,所谓“清理会话”实为清理_transient_timeout_%和_transient_%缓存键:必须先删timeout键再删值键,否则触发无效查询;多站点需同步处理_site_transient;删后须优化表。
wordpress 本身不使用 php 的 $_session 机制管理用户会话,所以你在 phpmyadmin 里根本找不到“wordpress 用户会话”对应的表或记录——这是个常见误解。所谓“清理过期会话”,实际要处理的是两类东西:一是数据库里残留的认证 cookie 元数据(wp_options 中的 _transient 和 _site_transient),二是 mysql 层面的真实连接会话(show processlist 显示的活跃连接),二者完全无关。
为什么 wp_options 里没有 session 表?
WordPress 登录状态靠加密 Cookie(如 wordpress_logged_in_*)维持,不依赖 PHP session 存储。它不会往数据库写 session_id 或 session 数据,因此不存在“WordPress 会话表”。你看到的 wp_usermeta 里的 session_tokens 字段,只是 JWT 风格的长期登录令牌(用于“记住我”),不是传统会话;它不会自动过期,也不该被批量删除。
真正该清理的是 _transient_timeout_* 这类缓存键
很多人误把 transient 当作“会话”,其实它是插件/主题存的临时数据,靠 _transient_timeout_XXX 控制生命周期。漏删 timeout 键会导致每次 get_transient() 都触发无效查询,拖慢数据库。
Word报告自动生成神器。自动生成专业Word文档报告,支持模板填充、目录生成、表格/图表插入、页眉页脚、多级标题、样式主题、批量邮件合并。当用户需要生成Word报告、创建合同文档、批量生成通知/证书、填充Word模板、制作商业计划书时触发。
- 必须先删 timeout:
DELETE FROM wp_options WHERE option_name LIKE '_transient_timeout_%'; - 再删值键:
DELETE FROM wp_options WHERE option_name LIKE '_transient_%' AND option_name NOT LIKE '_transient_timeout_%'; - 多站点需额外处理:
_site_transient_timeout_*和_site_transient_* - 别用
TRUNCATE TABLE wp_options——会重置自增 ID,破坏选项插入逻辑
MySQL 连接会话(PROCESSLIST)和 WordPress 无关
phpMyAdmin 的“进程列表”显示的是当前 MySQL 客户端连接(比如你的浏览器、WP-CLI、某个卡住的查询),不是 WordPress 用户会话。终止这些进程只影响数据库连接本身,不会登出用户,也不会清理任何缓存。
- 查看命令:
SHOW PROCESSLIST; - 终止指定连接:
KILL [ID];(ID 来自进程列表第一列) - 常见误操作:看到大量
sleep状态就全杀——那很可能是正常空闲连接,杀掉反而引发重连风暴 - 真正该关注的是
Time列超长(如 > 60 秒)且State为Locked或Copying to tmp table的进程
最易被忽略的点是:清理完 wp_options 后,必须点“优化表(Optimize table)”——否则碎片化会让后续查询越来越慢,尤其当 autoload='yes' 的选项变多时,影响更明显。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










