首頁 >後端開發 >php教程 >求解任务队列的原理?

求解任务队列的原理?

WBOY
WBOY原創
2016-06-06 20:32:221120瀏覽

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

回复内容:

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

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

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

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

memcacheq

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn