求解任务队列的原理?

WBOY
发布: 2016-06-06 20:32:22
原创
1105 人浏览过

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

回复内容:

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

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

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

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

memcacheq

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板