### 定时原理:
> 当前台有人能访问页面时,由js调用相关文件(tools/ptool.php)执行计划任务;
> 所以,“自动”执行是要访问前台触发的;
### “遗漏执行”问题:
> 假设设置一个计划任务,分别为04,08,12,16,18点执行;
> 结果发现有些没有执行,或没有准时执行。
> 分析一下,网站可能00~09点都没有访问,结果这是09点多执行了一次...
> 后续执行时间可能是 12:03, 16:30, ....
> 原因就是到点了没有人访问,没有触发...
> 直到有人访问了,才执行设置条件内没有执行的“任务”
### 出错问题:
> 因为不止一个计划任务,还有别的计划任务一起执行;
> 如果排在它之前的任务出错,可能导致后面的任务不能执行;
> 修改了数据结构(如计划任务需要使用的一个字段),或自己扩展了计划任务等,
> 导致错误有计划任务执行出错,再导致不能执行其它计划任务。
> 提示:可在后台一个一个执行/测试,如执行某个或多个出错,那么可把这个计划任务停用或删除。
> 文件(tools/ptool.php)不止执行计划任务,如果此文件在执行计划任务之前出错,也会导致计划任务不能自动执行。
> 来个实例:我DIY,删除了一个不用的字段,其实这个字段用于了“计划任务”统计,可能是兼容性质的,可能是需要的, 这是就导致了错误,导致它以下的计划任务不能运行了。
### 苛求想法:
- 苛求设置:需要每分钟执行一次(或时间更短)
> 你这是什么内容啊?可以动态取内容了,根本不需要计划任务;
- 苛求要求:一定要定时执行;
> 本系统办不到!
> 可从服务器设置方面考虑,见下 [替代办法]:
### 适当DIY:
- 把计划任务部署在会员中心,也可触发执行:
> 代码:- <script type="text/javascript" src="<?=$cmsurl?>tools/ptool.php"></script>
[color=rgb(51, 102, 153) !important]复制代码
> 放置位置:/adminc/entry.php适当位置,如“mcfooter();”代码快的前面;
> 结果:每刷新一次会员中心页面,也可触发执行计划任务了;
- 提示:
> 为了效率,不用每个会员中心页面都放上这样的代码,那自己选其它几个“关键脚本”,放上这个代码,
即打开相关页面才触发执行计划任务;
### 替代办法:
- 目前的“计划任务”确实有如上局限性;可以换个方向:用服务器设置触发;
- 服务器设置定时器;定时执行php/asp/.net脚本,或c,java等...达到定制触发,定时执行;
- 这里已经超出本系统能力范围,但以个人看法做点提示;
- 这里提示到此为止,具体自己DIY操作!请不要更多的追问!
|