我尝试构建一个应用程序,其中我的Web应用程序将一些消息推送到队列,然后工作人员将提取消息并执行一些SQL查询到远程数据库。
有一些很好的解决方案,如gearman.org,rabbitMQ等。
问题我得到的是如何为所有邮件保持与远程数据库的永久连接。 每次必须执行新的SQL时,我都不希望我的工作者重新连接到数据库。
有没有办法使用一个好的MQ系统,并且在共享内存中有一些永久工作者或连接保存? 工作者不能是PHP,可以是连接到远程mysql服务器的任何东西。
由于
答案 0 :(得分:0)
我在SMS网站上如何实现同样的目标是在C#上创建处理器应用程序(幸运的是我有一个Windows服务器,如果你使用的是linux,你可以在java应用程序上执行相同的处理器),这个处理器将处理使用一个连接并可能使用多线程的信息。它使您可以从处理的角度完全控制整个应用程序的结构。
解决方案1: 使用PHP worker / queue处理器并通过命令行运行它并在while循环中保持活动状态。例如:
php_file.php
<?php
//create connection
while (true){
//do the processing here
sleep(3000);
}
?>
on cli,写道:
nohup php php_file.php > worker_output.out &
解决方案2: 用PHP执行任何其他语言的程序,一旦执行就不会结束会话。也许python或java可以提供帮助。