已掉线,重新登录

首页 > 绿虎论坛 > 历史版块 > 编程

标题: [php]下载队列是怎样工作的

作者: @Ta

时间: 2011-06-02

点击: 2010

#设定描述的根目录为0wap/
虎绿林下载队列工作过程:
0.队列守护进程运行,检查锁文件$path='temp/rc/timedo.lock'是否超时(filemtime($path)<time()-3600)。如果未超时,马上退出。否则,队列启动。「确保进程唯一」
1.队列启动后,马上向temp/rc/目录里写一个锁文件(文件内容随便),表明自己存在。
2.从数据库按时间顺序读取10条任务。
3.依次执行10条任务(我们认为每条任务都不超过10分钟),每条任务执行完后就更新锁文件,表示自己还在。
4.十条执行任务都完成后,进程先删除锁,然后再用httplib调用自己,然后自己马上退出。
5.新的进程又开始工作……
6.数据库里有一条任务(数据备份和垃圾回收)永远无法完成,这是维持队列不停下来的动力。
7.如果下载进度查看程序发现队列的锁过期了,就会提示用户重启队列,由用户来调用队列守护进程运行。
8.队列守护进程set_time_limit(0);并且ignore_user_abort(true);
9.虎绿林的队列是“插件式”的,你可以添加任何类型的任务(在page/timedo/sub/目录定义)。
添加队列使用session类,一个很方便的类,可以像数组那样使用。

[隐藏样式|查看源码]


『回复列表(4|隐藏机器人聊天)』

1. 哦 哦 哦  多谢大老虎
(/@Ta/2011-06-02 17:31//)

2. 还真要点逻辑思维。
(/@Ta/2011-06-02 23:54//)

3. 还真要点逻辑思维。
(/@Ta/2011-06-03 11:01//)

4. 没听懂,看来还要多看几遍
(/@Ta/2012-09-15 22:21//)

回复需要登录

9月13日 11:19 星期六

本站由hu60wap6驱动

备案号: 京ICP备18041936号-1