2012-04-23 75 views
-1

我必须从我的数据库记录中提交所有电话号码到URL,但我需要限制每次只发送300个电话号码。PHP循环限制数

我需要一个PHP脚本能够以下方案运行:

  1. 从数据库中检索2000条记录。
  2. 循环所有行并将每个行保存到变量或其他内容中。 (重要)
  3. 总计有2000条记录。
  4. 循环300记录每次写入URL。 (非常重要)
  5. 提交URL(此部分无需解释)
  6. 循环下一个300条记录写入URL,并重复它直到记录2,000。

我相信在这种情况下,2000/300 = 7次循环,其中300次记录前6次,最后一次只发送200次记录。

正如我上面提到的,300条记录的循环非常重要,下一个循环能够知道从记录301开始直到600,依此类推。

EDITED

下面是我的原代码,但它是阅读完所有的电话号码和哑巴他们都到我的网址:

$smsno = trim($_REQUEST['string_of_phone_number_eg_;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 = ';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条记录写入字符串并扔到我的网址后等待执行第二次抛出到URL后获得下300条记录。

例如,

300条记录第一环:
$ phoneStr = phoneNumber01; phoneNumber02; phoneNumber03; ...; phoneNumber300
$链接=“http://smsexample.com/sms.php ?destinationnumber = $ phoneStr & messagetosms = $ message“; phoneNumber302; phoneNumber303; ...; phoneNumber600
$链接=“http://smsexample.com/sms.php?destinationnumber=$phoneStr & messagetosms

明年300条记录
$ phoneStr = phoneNumber301第二循环= $消息“;

等等。

+2

你有什么这么远吗?请更新您的信息。 – 472084 2012-04-23 10:11:17

+0

听起来像一个订单....我们不是你的员工 – itachi 2012-04-23 10:44:35

+0

@Jleagle,我更新了我的帖子上的代码。 – PGoldHow 2012-04-23 15:21:19

回答

0
// Per-request limit 
$limit = 300; 

// Get array of numbers 
$numbers = explode(';', $_REQUEST['string_of_phone_number_eg_;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); 

} 
+0

我已经更新了自己写的代码,请告诉我该从代码中增强哪些内容。谢谢 – PGoldHow 2012-04-23 15:24:55

+0

@PGoldHow查看更新的代码 – DaveRandom 2012-04-23 15:46:51

1
for ($i = 1; $i <= 2000; $i++) 
{ 
    if ($i % 300 == 0 || $i == 2000) 
    { 
     //Make URL and send 
    } 
} 
+0

以'$ i = 1'开头,否则第一次迭代将发送一个空请求... – DaveRandom 2012-04-23 10:17:44

+0

@DaveRandom,或者您可以使用'($ i + 1)'发出请求有必要从1开始。 – Ozzy 2012-04-23 10:21:17

+0

@Jack,我已经更新了我写的代码的帖子,请告诉我要从代码中增强哪些内容。谢谢 – PGoldHow 2012-04-23 15:23:21