我必须做以下事情:
我有一个守护进程设置每小时,执行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。
答案 0 :(得分:2)
我不知道第三方服务如何运作,
所以可能没有选择在单个API调用中发送多个SMS。
使用curl_multi_exec。
我不认为同时发火1000请求是可能的,
但100~200个请求应该没问题。
您可以在代码级别进行检查,
在同一个循环中,
做$cnt++
,
当$cnt=100
,
执行多卷曲,
重置$cnt
,
重复直到循环结束。
答案 1 :(得分:0)
您可以使用像ActiveMq这样的专业队列服务器(它有PHP support)
您可以轻松升级负责发送消息的进程数。