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

#设定描述的根目录为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|隐藏机器人聊天)
添加新回复
回复需要登录