You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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创建会话时因目录不存在抛出错误。

  • 保存退出编辑器后,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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 02:20:34