【问题标题】:curl on a massive scale大规模卷曲
【发布时间】:2012-01-21 23:26:55
【问题描述】:

我必须做到以下几点:

我设置了一个守护进程,它每小时执行一次 nohup 命令(通过调用 exec('nohup sms.php ....'),然后 sms.php 会通过用户数据库并向其发送一条短信每个用户同时进行。它通过联系(通过 curl)第三方消息服务来实现。

所以sms.php的结构如下:

$sql = 'SELECT * FROM users'.
$q = execute sql query

while($r = ....)
{
   // url is the url to the third party service that handles sending sms 
   $ch = curl_init($url);
   call curl functions
   $data = curl_exec();
}

基本上,我希望 sms.php 能够同时向 1000 多个用户发送短信。所以用户应该同时收到短信。

如何改进代码以允许: - 同时向所有用户发送短信 - 处理超过 1000 个用户(这意味着每个用户发送短信不应该花费很长时间,而 apache 或 PHP 不能阻止我发送那么多)

编辑:我不想使用外部 API。只是 curl 功能。谢谢!

编辑:第三方服务器提供了一个 URL,我们必须使用 CURL 访问该 URL 以发送 SMS 消息。

【问题讨论】:

  • 我很困惑,third part(y) message service 不是 API 吗?那它长得像什么?

标签: php mysql curl


【解决方案1】:

我不知道第三方服务是如何工作的,
所以这可能不是在单个 API 调用中发送多条 SMS 的选项。

使用curl_multi_exec
我认为不可能同时触发 1000 个请求,
但是100~200个请求应该没问题。

您可以在代码级别进行检查, 在同一个循环中,
做一个$cnt++,
$cnt=100,
执行多卷曲,
重置$cnt,
重复直到循环结束。

【讨论】:

    【解决方案2】:

    您可以使用像 ActiveMq 这样的专业队列服务器(它有 PHP support

    1. 一个进程将电话号码从数据库推送到队列
    2. 您运行多个进程,从数据库中轮询一个号码并发送短信

    您可以轻松增加负责发送消息的进程数量。

    【讨论】:

      猜你喜欢
      • 2015-09-09
      • 2018-12-01
      • 2015-07-31
      • 1970-01-01
      • 2010-12-10
      • 2017-03-27
      • 2019-06-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多