我必须将我的数据库记录中的所有电话号码提交到URL,但我需要限制每次只发送300个电话号码。
我需要一个能够运行以下场景的php脚本:
我相信在这种情况下,2,000 / 300 = 7次循环,其中300次记录为前6次,最后时间仅发送200条记录。
正如我上面提到的,300条记录的循环非常重要,下一次循环能够知道从记录301开始到600,依此类推。
EDITED
以下是我的原始代码,但是它正在读取所有电话号码并将它们全部丢到我的网址上:
$smsno = trim($_REQUEST['string_of_phone_number_eg_0123456;0124357;0198723']);
$message = trim($_REQUEST['message']);
$phoneNo = explode(";", $smsno);
// ----------
//
// Need to count total $phoneNo, eg total is 2,000 phone numbers
// Loop 300 times for the phone numbers, eg 001-300, 301-600, 401-900, ..., 1501-1800, 1801-2000
// Every 300 records, eg $phoneStr = '0123456;0124357;0198723;...' total 300 phone numbers in this string
// Write into my URL: $link = "http://smsexample.com/sms.php?destinationnumber=$phoneStr&messagetosms=$message";
//
// ----------
我正在寻求解决方案,因为我不知道如何循环每个300条记录并写入字符串然后将此字符串抛出到我的URL。
我可以制作前300条记录,但是如何在前300条记录写入字符串后抛出下一条300条记录并扔到我的网址,并等待第二次投掷到网址。
例如,
300条记录的第一个循环:
$ phoneStr = phoneNumber01; phoneNumber02; phoneNumber03; ...; phoneNumber300
$ link =“http://smsexample.com/sms.php?destinationnumber=$phoneStr&messagetosms=$message”;
接下来300条记录的第二个循环
$ phoneStr = phoneNumber301; phoneNumber302; phoneNumber303; ...; phoneNumber600
$ link =“http://smsexample.com/sms.php?destinationnumber=$phoneStr&messagetosms=$message”;
等等。
答案 0 :(得分:1)
for ($i = 1; $i <= 2000; $i++)
{
if ($i % 300 == 0 || $i == 2000)
{
//Make URL and send
}
}
答案 1 :(得分:0)
// Per-request limit
$limit = 300;
// Get array of numbers
$numbers = explode(';', $_REQUEST['string_of_phone_number_eg_0123456;0124357;0198723']);
// Get message
$message = trim($_REQUEST['message']);
// Loop numbers
while ($numbers) {
// Get a block of numbers
$thisBlock = array_splice($numbers, 0, $limit);
// Build request URL
$url = "http://smsexample.com/sms.php?destinationnumber=".urlencode(implode(';', $thisBlock))."&messagetosms=".urlencode($message);
// Send the request
$response = file_get_contents($url);
}