如何在Linux服务器上设置定期自动清理CodeIgniter异常命名PHP会话?
解决CodeIgniter会话文件积累的自动化清理方案
一、直接通过Cron定时任务实现自动化删除
这是最快速适配现有手动操作的方案,核心利用系统定时任务工具Cron定期执行清理命令:
- 编辑定时任务列表:执行
crontab -e(需root权限则加sudo),打开当前用户的Crontab编辑器。 - 添加定时规则:
- 每日凌晨2点清理所有会话文件:
0 2 * * * rm -rf /var/cpanel/php/sessions/ea-php74/* - 每两日凌晨2点清理:
0 2 */2 * * rm -rf /var/cpanel/php/sessions/ea-php74/*
注意:不要直接删除
ea-php74目录本身,仅删除目录内文件,避免PHP创建会话时因目录不存在抛出错误。 - 每日凌晨2点清理所有会话文件:
- 保存退出编辑器后,Cron会自动加载新的定时任务,无需额外重启服务。
优化:仅清理过期会话文件
如果不想删除所有文件,可改用find命令只删除超过指定时长的旧文件(比如删除24小时前生成的文件):
0 2 * * * find /var/cpanel/php/sessions/ea-php74/ -type f -mtime +1 -delete
二、从根源解决:让PHP默认会话清理器生效
问题本质是CodeIgniter生成的会话文件命名格式(__xxxxxx)不符合PHP默认清理器的识别规则,只需调整CodeIgniter的会话配置即可:
打开application/config/config.php,修改会话前缀为PHP默认的sess_:
$config['sess_prefix'] = 'sess_';
修改后生成的会话文件会以sess_开头,PHP自带的会话垃圾回收机制(由session.gc_probability等配置控制)就能自动清理过期文件,无需手动或定时执行删除命令。
内容的提问来源于stack exchange,提问作者Daniel Gubic
相关产品推荐
相关产品推荐

