【发布时间】:2015-10-26 17:52:57
【问题描述】:
我正在考虑在我的新应用中使用 RabbitMQ 进行一些异步处理。
我面临的挑战之一是如何最好地处理数据库连接。我将使用 Eloquent 和有效的 PDO。
我在网上找到的一个资源https://www.teqneers.de/2013/10/simple-spawn-rabbitmq-consumers-with-php/ 建议使用proc_open 生成一个新进程,但我对这种方法不太满意,想知道是否有更好的方法。
我还尝试寻找在 PHP 守护程序中处理数据库连接的最佳实践,但没有找到任何东西。
我想到的一些事情。
-
为每条消息创建一个新连接并关闭它
- 缺点:应用程序是关于向批量消息传递消息的,消费者会很多并且经常运行。可能资源很重。
- 优点:但是,传统的 php 脚本以类似的方式工作,所以这可能不是一个坏主意
-
在消费者的整个生命周期中保持连接并经常杀死他们
- 缺点:显然是浪费。需要不断检查连接是否仍处于活动状态。
-
在命令行上运行工作器
- 缺点:移动部件太多。需要解析消息 ACKS 的响应,因此消费者需要等待工作人员结束。意味着创建和关闭每条消息的连接,最好坚持使用选项 1,因为它的部分更少。
我也想到了持久连接,但在阅读了更多关于它们的信息后,似乎它们并不是我想象的那样。此外,许多帖子都说这不是一个好主意。
我知道 PHP 可能不是最适合这方面的工作,但我正在快速进行原型设计,而 PHP 是我最适合这项任务的语言。
如果我能就如何处理这个问题获得一些建议,我将不胜感激。
谢谢。
【问题讨论】:
标签: php database rabbitmq database-connection daemon