![]() | 1 alex8224 2013-05-10 20:12:19 +08:00 gearman 之 |
![]() | 2 shiny 2013-05-10 20:22:19 +08:00 ![]() 小网站的话, apache可以用ignore_user_abort,php-fpm可以用fastcgi_finish_request,在请求结束后将进程置入后台,然后可以用数据库来模拟队列。 |
![]() | 3 AlloVince 2013-05-10 20:33:26 +08:00 |
![]() | 4 ljbha007 2013-05-10 20:43:07 +08:00 ![]() 直接把邮件插入数据库 然后用cronjob来运行脚本发邮件 |
![]() | 5 darasion 2013-05-10 21:09:27 +08:00 参考各种论坛的定时任务。 |
6 julyclyde 2013-05-10 22:14:12 +08:00 用队列没啥问题,异步多少都会有队列 只是不一定用message queue服务软件实现罢了。数据库也可以,注意给记录加锁 |
![]() | 7 XDash 2013-05-11 10:44:54 +08:00 cron |
8 raincious 2013-05-11 11:07:32 +08:00 楼主要发送的邮件数量多么?不多的话不一定要异步的吧? 你也可以选择给客户端发送Connection: Close来断开客户端flush一下,然后ignore_user_abort让PHP继续给你发送邮件。这样的效果其实也是客户端瞬间打开的。 这样的好处是,程序修改量不大,而且可以在大部分主机上运行,不需要cron。但是邮件数量太多的话,这个可能太占用资源了。 http://cn2.php.net/manual/en/function.ignore-user-abort.php |
9 jasontse 2013-05-11 11:29:55 +08:00 via iPad ![]() 简单的消息队列可以使用msg_*函数实现 http://php.net/manual/en/function.msg-get-queue.php |
![]() | 10 lenye 2013-05-11 22:32:04 +08:00 推荐gearman |
![]() | 11 8n1AfdFQWA5CWTNQ 2013-05-13 12:13:02 +08:00 @ljbha007 我也是一般这么干的。 |
![]() | 12 gaocheng 2013-05-13 12:28:48 +08:00 crontab和消息队列都是不错的方式,也是使用较多的方式 |
![]() | 13 qiqiboy 2013-05-17 17:50:01 +08:00 你可以去学习下wordpress的定时任务如何实现的,就很容易做出自己的定时任务和异步任务机制了 |
![]() | 14 buru 2013-05-23 23:56:38 +08:00 数据库存储的task queue + crontab 看这个http://raivoratsep.com/161/simple-php-task-queue/ |