chouxiaozi 发表于 2008-01-31 14:04

哪位知道像discuz的计划任务是如何实现的

哪位知道像discuz的计划任务是如何实现的,google了一下有人说写个角本然后用系统自带的计划任务来达到,但是请注意我问的是基于php本身的,因为我看discuz也没用到上面说的方法

笨狼追风 发表于 2008-01-31 14:30

PHP本身是没这个功能的 .DISCUZ的计划任务可以这样理解 ,每次页面被请求的时候都会去检查当前有没有需要执行的"计划任务" ,有则处理之 ,并修改下次执行的时间 ,没有就继续正常请求 .

这个过程可以根据实际情况优化一下 .

cxh1984 发表于 2008-01-31 22:38

都是通过用户触发的.

carset 发表于 2008-02-01 14:41

但纯的apache+php是很难实现的.如果你想做任务.唯一的方法就是使用 死循环来实现.但最好不要放在apache里跑.可以独立起个进程来维护你的死循环.

肥同小可 发表于 2008-02-02 17:10

用系统自带的计划任务来执行是不可能的……太麻烦了,不同系统计划任务执行都不同,且设置也麻烦,呵呵

showsa 发表于 2008-02-03 00:01

discuz 是学vbb的,vbb很早就实现了

工作原理

将所有的任务计划放置在数据库中,然后再用户访问页面的时候触发一个 1px的img 比如<img src=cron.php>

cron.php会根据任务时间和周期进行任务计划

redskywy 发表于 2008-02-05 09:15

可以将要执行的任务放入数据库然后在写一个后台程序去解析数据库的内容或者利用系统的计划任务来启动解释程序去执行.

rardge 发表于 2008-02-05 16:35

原帖由 redskywy 于 2008-2-5 09:15 发表 http://bbs.chinaunix.net/images/common/back.gif
可以将要执行的任务放入数据库然后在写一个后台程序去解析数据库的内容或者利用系统的计划任务来启动解释程序去执行.
这个比较可行。
如果靠用户访问网页的时候去触发,万一没有人访问就挂了,哈哈。

bigbigworld 发表于 2008-02-05 22:13

不好意思,这种东西php是不支持的.而且,这种计划性的东西,最好不要使用那种认程序经常来检查是否应该执行,这种方法从表面上看可以实现计划任务的功能,但是对服务器的负担和人为的因素很大,不可行的

LZ如果是用的linux的系统,可以使用crontab计划任务来执行,windows的也有这个功能的,但是本人只玩linux,不玩windows这么高级的功能,所以不知道,LZ可以去baidu查查看

zwws 发表于 2008-02-08 17:20

一般都是通过用户去浏览触发的.

BTW, 我都不知道怎么玩LINUX, 还在学校, 呆瓜了.
页: [1] 2
查看完整版本: 哪位知道像discuz的计划任务是如何实现的