php curl请求作为foreach循环

时间:2013-11-01 17:56:39

标签: php curl

我有一台服务器要求我发送卷曲响应以获取有关给定电话号码的数据。

$numbers = array('12345','23456','345567','45678');

 foreach ($numbers as $value)
 {
  $curl = curl_init();
  curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
  curl_setopt($curl, CURLOPT_USERPWD, "user:password");
  curl_setopt($curl, CURLOPT_URL, "http://server/data/user=" . $value);

  $ret = curl_exec($curl);
  $result = json_decode($ret,true);

   echo $result['someData'] . "<br>";
  curl_close($curl);
 }

我的问题是: 这有效吗?

有更好的方法吗?

如何在每个curl结果之后将echo打印到屏幕上,直到等到整个脚本结束才能运行?

2 个答案:

答案 0 :(得分:1)

您需要立即 flush 数据。试试这样的事情

<?php
ob_start(); //Turning ON Output Buffering
$numbers = array('12345','23456','345567','45678');

 foreach ($numbers as $value)
 {
  $curl = curl_init();
  curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
  curl_setopt($curl, CURLOPT_USERPWD, "user:password");
  curl_setopt($curl, CURLOPT_URL, "http://server/data/user=" . $value);

  $ret = curl_exec($curl);
  $result = json_decode($ret,true);

  ob_flush();//Flush the data here
  echo $result['someData'] . "<br>";
  curl_close($curl);
 }
 ob_end_flush();

浏览所有输出函数here

答案 1 :(得分:0)

我认为如果您联系的服务器只接受一个号码,那么这样做是有意义的。

如果您可以访问接收端的代码,那么也许您可以序列化您的阵列并一次性发送整个内容。