最近发现论坛内有些用户当月在线时间被清空,究其原因发现是清空当月在线时间的计划任务在某一错误时刻被执行。 就本帖分析下计划任务的实现过程,方便用户排查错误。 数据库结构: 论坛内现有的计划任务数据被保存在pre_common_cron表中,表中数据与论坛后台计划任务列表中的数据一致。 weekday字段为X表示每周星期X执行计划任务,day字段为X表示每月X日执行计划任务。X为-1表示不限制,即每天都执行计划任务。 执行计划任务: 执行计划任务在class_core.php中,初始化计划任务的函数_init_cron()中 function _init_cron() { $ext = empty($this->config['remote']['on']) || empty($this->config['remote']['cron']) || APPTYPEID == 200; if($this->init_cron && $this->init_setting && $ext) {