通过API发送耗时的脚本

时间:2014-03-14 23:01:50

标签: php mysql api

各种用户都会提交他们的电话号码,以获得我提供的某些服务的通知。一旦我开始提供服务,就应该向已注册的所有用户发送短信通知(提交他们的电话号码)。

foreach($phone_numbers as $number)
   // api call to send the sms
   $msg->send($number);
endforeach

现在令我困惑的事情是,在某些时候我可以让1000个用户注册,当我添加该服务时脚本自动运行时,它将花费大量时间来循环遍历1000个数字并使1000个API调用。

有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

一种方法是使用像RabbitMQ这样的消息队列。这样,您可以将任务推送到队列并由单独的进程处理,该进程可以在不同的服务器上运行。它还有一个优点,它应该更健壮,因为如果失败,你的工作脚本可以再试一次。

我没有机会将它与PHP应用程序一起使用,但我已经将它与Celery一起用于Django应用程序并获得了良好的效果。我在http://blog.teqneers.com/2013/10/simple-spawn-rabbitmq-consumers-with-php/http://www.rabbitmq.com/tutorials/tutorial-two-php.html找到了看起来很好看的PHP示例。