ホームページ >バックエンド開発 >PHPチュートリアル >队列的实际应用,比如发邮件!!!
队列实现看似简单,我想问下,在比如发送大量邮件的情况的,进入队列和消除队列,肯定不是在统一时间进行的吧,比如我调用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来处理队列