Php 通过API发送耗时的脚本

Php 通过API发送耗时的脚本,php,mysql,api,Php,Mysql,Api,不同的用户会提交他们的电话号码,以获得我提供的特定服务的通知。一旦我开始提供服务,短信通知应发送给所有已注册(提交其电话号码)的用户 现在让我困惑的是,在某一点上,我可以有大约1000个用户注册,当我添加该服务时脚本自动运行时,循环1000个数字并进行1000个API调用将花费大量时间 有更好的方法吗?一种方法是使用RabbitMQ这样的消息队列。这样,您就可以将任务推送到队列中,并由一个单独的进程来处理它,该进程可以在不同的服务器上运行。它还有一个优点,就是它应该更加健壮,因为如果失败,您的辅

不同的用户会提交他们的电话号码,以获得我提供的特定服务的通知。一旦我开始提供服务,短信通知应发送给所有已注册(提交其电话号码)的用户

现在让我困惑的是,在某一点上,我可以有大约1000个用户注册,当我添加该服务时脚本自动运行时,循环1000个数字并进行1000个API调用将花费大量时间


有更好的方法吗?

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


我还没有机会在PHP应用程序中使用它,但我在Django应用程序中使用了芹菜,效果很好。我在和中找到了外观不错的PHP示例。

为什么不添加一个cronjob,并通过将cron设置为每10分钟运行一次,在每次执行中发送100条短信。您使用的API服务是否允许批量发送?许多API允许批处理运行,您可以在一个API请求中提交X个作业,而不是每个API请求提交一个作业。您可以查看Gearman库。上面提到了两种很好的方法。任何好的短信服务都应该允许批量发送。或者,如果没有,你可以用某种方式查看消息队列。@nickhar我不确定。我得和他们核实一下。但很可能他们没有。但是谢谢,我现在给他们发电子邮件
foreach($phone_numbers as $number)
   // api call to send the sms
   $msg->send($number);
endforeach