+ -
当前位置:首页 → 问答吧 → 探讨高性能任务队列(PHP)

探讨高性能任务队列(PHP)

时间:2010-07-29

来源:互联网



例如:邮件队列、任务队列、消息队列、Feed队列
用户注册成功,而不是直接给用户发送email,而是把新注册的用户的email插入到邮件任务队列中。由服务器给用户发送邮件。发送成功或发送N次失败的将从队列中清除。

求实现方案。crontab么?貌似应用性不强
For PHP!

作者: yafeikf   发布时间: 2010-07-29

ZeroMQ RabbitMQ ActiveMQ

都是现成的

作者: 四不象   发布时间: 2010-07-29

这估计要用c或者java做了, 先用c生成队列, 然后注册好插入队列, 队列满了就发送邮件, 清除队列等.

作者: liexusong   发布时间: 2010-07-29

现成的太多了 新浪的MemcacheQ 张宴的HTTPSQS Java的JMS都能实现消息队列

作者: hfahe   发布时间: 2010-07-29

如果是普通的网站,如平均每秒产生的队列消息不超过上百,则用低成本数据库+轮询程序,完全可行.

具体思路如下:

1. 当产生消息时,使用MySQL的表保存产生的新队列消息,并记录一些运行参数
2. 服务器上开启cron(Linux),或开启自动刷新的浏览器窗口(Windows),比如按半分钟运行一次轮询程序
3. 这些轮询程序每次取出一些队列消息,进行处理,处理成功或是处理失败N次后,删除MySQL队列表中的相关记录

如此反复,即可实现.我觉得这个方式的优点是:
1. 实现最为容易,可行性最好
2. 低成本的开发或是平台部署成本 

在我们的生产环境中,这种方式得到了大量实践,表现良好.


当然,如果确实是"高性能",那么这个问题更不问题,既然需要高性能,说明网站的规模不一般,既然规模不一般,还会缺钱吗? 不缺钱,就可以找这方面的专家去解决.

作者: xuer   发布时间: 2010-07-29