网站之家技术交流论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1112|回复: 0

08cms计划任务的局限性说明

[复制链接]
发表于 2016-5-29 16:37:30 | 显示全部楼层 |阅读模式
### 定时原理

> 当前台有人能访问页面时,由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操作!请不要更多的追问!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|网站之家技术交流论坛 ( 粤ICP备09092995号 )

GMT+8, 2024-4-29 00:57 , Processed in 0.081098 second(s), 6 queries , File On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表