我有一个SMS API,可以发送短信。我想用它来批量发送短信。
用户一次最多可输入30,000个号码并发送短信。我正在使用的可能是一个非常糟糕的方法:
foreach ($targets as $target) {
sendSms($target,$text,$extra_parms):
}
处理10,000个请求(SMS)需要10分钟,而且太多了。我想要的是当用户点击发送'按钮,他应该收到如下消息:
"您的短信已添加到要发送的队列"
所有短信都应该在后台发送。我怎么能这样做?
感谢您的帮助。
答案 0 :(得分:0)
按照以下流程:
请注意:正常的CURL请求使用同步,它等待响应,这会导致延迟。
答案 1 :(得分:-1)
创建队列即在数据库中并将所有SMS操作放在那里。创建单独的脚本,发送短信(分批,整个),并定期启动(即使用Curl)来处理你的队列。
答案 2 :(得分:-2)
我使用的是:
function fast_post($url,$data){
ignore_user_abort(true);
$ch = curl_init();
$defaults = array(
CURLOPT_POST => 1,
CURLOPT_HEADER => 0,
CURLOPT_URL => $url,
CURLOPT_FRESH_CONNECT => 1,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_FORBID_REUSE => 1,
CURLOPT_TIMEOUT => 1,
CURLOPT_POSTFIELDS => http_build_query($data)
);
curl_setopt_array($ch, $defaults);
curl_exec($ch);
curl_close($ch);
}
请注意,在此函数中,$ data是一个数组。