卷曲大规模

时间:2011-12-16 12:25:46

标签: php mysql curl

我必须做以下事情:

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

所以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访问以发送SMS消息的URL。

2 个答案:

答案 0 :(得分:2)

我不知道第三方服务如何运作,
所以可能没有选择在单个API调用中发送多个SMS。

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

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

答案 1 :(得分:0)

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

  1. 一个进程将电话号码从数据库推送到队列
  2. 您运行多个进程,从数据库中轮询一个号码并发送短信
  3. 您可以轻松升级负责发送消息的进程数。