在我的PHP应用程序中,我在foreach循环中运行curl_exec。
$myarray = array('0'=>'mobileno.1', '1'=>'mobileno.2'); // Contains 4000 records - from contacts table
foreach($myarray as $myarr)
{
$tomobile = $myarr;
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => $sms_gateway_url."?username=".$sms_username."&api_password=".$sms_password."&to=".$tomobile."&priority=".$sms_priority."&sender=".$sender_id."&message=".$mes
));
$resp = curl_exec($curl);
curl_close($curl);
if (strpos($resp, "Submitted") !== false)
{
$status = 'success';
}
else
{
$status = 'failed';
}
// mysql insert query (sendsms table)
// mysql update query (contacts table)
}
这里,逻辑是每次执行,我将从联系人表中获取4000条唯一记录,并使用foreach循环向每个记录发送短信。
此处问题是有时重复的SMS正在为相同的联系人发送。例如,在一次执行中,我的脚本发送大约5000条短信而不是4000条短信。
示例:如果我发送了4000条短信,则已发送超过5000条短信,并在sendms表中插入相同的5000行。每次执行时重复计数都会有所不同。如果我隐藏curl选项,sendms表中会正确插入4000行。