苹果CMS定时采集执行底层逻辑
苹果CMS定时采集依赖两个核心触发路径,一是站点自身的伪定时触发,即用户访问站点时触发后台任务队列,二是服务器端的crontab(Linux)/计划任务(Windows)主动触发。根据影视站点运维行业统计数据,82%的定时采集失效问题都出在触发链路而非采集规则本身,排查需优先从触发层切入。
前置排查准备工作
环境校验
先确认当前运行环境符合基础要求:PHP版本≥7.2且开启pcntl、curl扩展,站点文件权限设置为755、runtime缓存目录权限设置为777,MySQL版本≥5.6且无锁表限制,基础环境不达标会直接导致采集进程中断。
基础规则校验
手动执行一次对应采集规则,确认返回采集成功标识,排除规则本身失效、资源站接口宕机的问题,手动采集成功率100%是后续排查的前提。
安全提示:所有操作前需备份站点数据库和核心配置文件,避免误操作导致数据丢失。
分场景问题排查与修复方案
伪定时触发失效修复

伪定时是中小流量站点常用的低成本触发方案,失效核心原因是站点日活不足,无法触发任务队列执行。
- 进入苹果CMS后台,点击系统-系统配置-性能优化,将“定时任务触发方式”设置为“访问触发”,缓存周期设置为和采集周期一致,最低不低于300秒。
- 使用第三方定时巡检工具(如UptimeRobot、阿里云云监控)配置站点首页访问任务,频率设置为采集周期的1/2,例如每小时采集则配置每30分钟访问一次站点,触发任务队列。
- 修改站点根目录下index.php,添加代码强制触发采集队列:
```php
// 强制触发定时任务,1800为触发间隔单位秒,可按需调整
if(!file_exists('./runtime/crontab.lock') || time()-filemtime('./runtime/crontab.lock') > 1800) {
file_put_contents('./runtime/crontab.lock', time());
file_get_contents('http://替换为你的域名/index.php?m=admin&c=crontab&a=run', false, stream_context_create(['http'=>['timeout'=>5]]));
}
```
服务器定时任务失效修复
服务器定时任务是稳定性最高的触发方式,失效多为路径配置错误、权限不足导致。
- Linux系统操作:登录服务器SSH终端,执行crontab -e编辑定时任务,添加如下规则(替换为实际站点路径和域名):
```shell
每30分钟执行一次采集任务,PHP路径可执行php -v查询确认
/30 /usr/bin/php /www/wwwroot/替换为你的站点路径/crontab/crontab.php >> /www/wwwroot/替换为你的站点路径/runtime/crontab.log 2>&1
可选URL触发方式,适配禁用PHP CLI的环境
/30 /usr/bin/curl http://替换为你的域名/index.php?m=admin&c=crontab&a=run --connect-timeout 10
```
添加完成后执行systemctl restart crond重启定时任务服务,查看runtime目录下的crontab.log确认执行日志无报错。
- Windows系统操作:进入计算机管理-任务计划程序,新建任务,触发器设置为每30分钟触发一次,操作设置为“启动程序”,程序或脚本选择php.exe路径,参数填写你的站点目录下crontab.php的绝对路径,保存后手动运行一次任务确认执行成功。
- 权限校验:确认crontab.php文件权限为755,runtime目录有写入权限,PHP CLI版本和站点运行的PHP版本一致,避免扩展缺失导致CLI模式下采集失败。
后台任务队列阻塞修复
当采集任务过多、单次采集超时未释放进程时,会导致任务队列阻塞,后续任务无法执行。
- 进入苹果CMS后台采集-定时任务,删除重复的采集任务,将不同资源站的采集任务错开执行时间,避免并发过高导致阻塞。
- 清理runtime目录下的crontab.lock、queue.lock文件,释放被锁定的任务进程。
- 修改后台定时任务的单次采集数量,设置为≤20条,单次采集超时时间设置为60秒,避免单任务占用资源过久。
修复效果验证与运维规范
效果验证
配置完成后等待2个采集周期,查看后台采集-采集日志,确认有对应时间的采集成功记录,查看crontab.log文件无报错信息,采集资源按时入库即为修复完成。
长期运维规范
- 每月定期检查定时任务执行日志,清理过期缓存文件,避免目录爆满导致写入失败。
- 资源站接口更新后第一时间手动校验采集规则,避免规则失效导致定时任务空跑。
- 每季度同步更新苹果CMS安全补丁,修改后台默认的crontab入口路径,避免被恶意访问触发CC攻击。