计划任务体系

线形标注 1(无边框): 标记下次执行时间线形标注 1(无边框): 读取全部任务

包含文执行

 
下箭头: 有

判断当前有无任务

 

数据库

 
顾名思义计划任务体系就是在指定的时间运行指定的任务。而所需任务是写在文件里的,那实际流程就是指定的时间执行指定的文件!那么如何让论坛在指定的时间执行指定的文件呢,由于论坛是php写的,传统php不是长驻留内存,也就是无法实时获取时间并执行指定代码的。所以论坛的计划任务有别于linux crontab,而是接受请求的时候读取数据库记录,对比时间来运行当前时间需要运行的文件,然后包含执行。当然在执行之后会先更新数据库,标记下次执行的时间。

 

 

 

 

 

 

 

 

 

 

 

上面看了流程,下面我们看主要程序实现。首先我们看index.php的最后几行,我们可以看到

 

$plantime那个变量是来自于pw_bbsinfo表,见index.php

 

这里要说一下,计划任务本来是存在pw_plan表的,但是为了提高效率减少查询数量,吧pw_plan表的时间提到了pw_bbsinfo表,具体程序见admin/cache.php updatecache_plan()函数!

 

下面我们看require/task.php

主要功能如下:

 

计划任务的前台流程已经说完,下面我们看看后台如何操作。

打开后台运营->计划任务

我们可以对已添加的计划任务进行编辑,也可以重新自己写个计划任务,将文件放在require/plan/文件夹下就可以,如自动会员解禁

 

还有一点需要注意的是自定义的文件一定要在文件头部加上这句,这样可有效防止该程序被非法访问运行!