求解任务队列的原理?


最近遇到了一些问题,服务器对某个处理太耗时导致网页反应速度很慢,听说了任务队列。谷歌了一下,基本上都是讲某个队列怎么用,但其实并没有一个太清晰的概念,能请各位讲解一下吗?
首先说一下我理想中的情况。比如一个请求被处理的时候,我发现它很费时,于是对它进行一番描述后再序列化,并存到 某个公共的地方 。同时有一个 守护进程 在监听那个 公共的地方 ,一但发现有动静就从 公共的地方 取一条数据出来,反序列化后根据逻辑再调用某些脚本来处理这些费时的任务。
不知道这么设想队列的工作方式有没有问题呢?
如果是这样的话, gearman 或者 disque 等,扮演的是上述哪些角色呢?
能推荐一些适合PHP使用的吗,谢谢

队列 gearman php

某喵的爪牙 9 years, 6 months ago

队列本质上是为了解耦而存在的.
如你所说的,服务器对某个处理太耗时导致网页反应速度很.这个本身如果存在可以拆分的部分,展示逻辑和后续的处理逻辑可以分开,就可以采用队列的方案来进行计算.
举例来说,阅读邮件之后,会有一个将未读标记为已读的.在你打开邮件的同时,这个状态的更换可以不用立即处理,丢到队列里去,先把邮件内容取出来做展示,然后后续有个类似守护进程的不断的去队列里消费(或者说不断的问队列,有没有新的消息啊),取出这个将XX邮件未读状态更改为已读状态的事件,然后做处理.

gamiiu answered 9 years, 6 months ago

memcacheq

纯洁友善初次君 answered 9 years, 6 months ago

php队列,推荐使用 httpsqs
使用方法可以去看 张宴的博客 ,
使用方法大概就是吧 比较耗时 的任务丢到 httpsqs 里面,丢进去,就代表成功, 然后马上返回,告诉用户处理成功

然后后台起一个 计划任务 每秒执行一次 ,往httpsqs里面取出数据,然后进行比较耗时的操作,取到数据为空,就代表队列已经空了
博客地址

虎皮蛋果珍受 answered 9 years, 6 months ago

Your Answer