Maison >développement back-end >tutoriel php >队列的实际应用,比如发邮件!!!

队列的实际应用,比如发邮件!!!

WBOY
WBOYoriginal
2016-06-06 20:41:40889parcourir

队列实现看似简单,我想问下,在比如发送大量邮件的情况的,进入队列和消除队列,肯定不是在统一时间进行的吧,比如我调用inqueue.php进队列加入要发送的邮箱地址,dequeue.PHP发送邮件并消除减去队列,这两个肯定不是一起运行的吧?。还是在queue.php里边先进队列在消除队列如果是这样的话那和用循环有什么区别?

<code>谁能以发送大量邮件为例子给解释下队列的实际用法吗
</code>

回复内容:

队列实现看似简单,我想问下,在比如发送大量邮件的情况的,进入队列和消除队列,肯定不是在统一时间进行的吧,比如我调用inqueue.php进队列加入要发送的邮箱地址,dequeue.PHP发送邮件并消除减去队列,这两个肯定不是一起运行的吧?。还是在queue.php里边先进队列在消除队列如果是这样的话那和用循环有什么区别?

<code>谁能以发送大量邮件为例子给解释下队列的实际用法吗
</code>

队列怎样运作你基本上不需要考虑,只要使用现成的队列即可,例如httpsqs,简单的消息队列,先进先出,用http操作,简单易用,只关系入列和出列即可,至于有什么用,例如邮件发送、大量数据写入、短信发送、反正可以异步操作的尽量队列完成

参考这个:http://segmentfault.com/q/1010000000750317/a-1020000000750367


本质就是异步和阻塞。


不用队列

进入操作平台

点击发送按钮

等……

等……

咦…… 怎么没有反应……

或者人性化点儿,添加一个进度条

N分钟后,操作完成

在这个过程中,你是不能进行任何操作的。

使用队列

进入操作平台

点击发送按钮

(想等,想偷懒,没门,已经结束了)

继续进行其它操作。

我前几天也提了这个问题和你的比较相似点这里
现在我想的解决方案是,将任务以队列形式交给后台执行,至于你的问题,队列的优点就是你发送了一个任务,交给worker去执行,你可以继续做想做的事情,然后通过事件监听来记录每个条目执行成功与否,成功后消除。

php的话用gearman就挺好,或者redis来处理队列

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn