【问题标题】:php send curl request and wait for the responsephp 发送 curl 请求并等待响应
【发布时间】:2013-11-18 00:05:53
【问题描述】:

我正在向服务器发送 curl 请求,该服务器需要几秒钟来处理请求并发出响应。我相信我的 php 脚本正在继续运行而不是等待,因此基于响应的 foreach 循环吐出 0 个结果。在继续处理数据之前如何等待 curl 事务完成?

  $curl = curl_init();
  curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
  curl_setopt($curl, CURLOPT_USERPWD, "admin:password");
  curl_setopt($curl, CURLOPT_URL, "http://server/r/?dst_user__substr='user'");


  curl_setopt($curl, CURLOPT_VERBOSE, 1);
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  $ret = curl_exec($curl);
  $result = json_decode($ret,true);

 <<<<I need to wait until transaction is complete here>>>>

  foreach ($result['data'] as $key => $value)
  {
        //process data from $result
  }

【问题讨论】:

  • AFAIK,它在继续运行脚本之前等待响应。
  • 尝试在$ret = curl_exec... 行之后添加if ($ret===false) echo curl_error($curl); - 可能是命令超时等待响应。

标签: php curl


【解决方案1】:

curl 是阻塞的,这意味着:

$result = json_decode($ret,true);

foreach ($result['data'] as $key => $value)
{
      //process data from $result
}

直到:

$ret = curl_exec($curl);

已完成。您可以使用 curl_error() 以及使用 curl_getinfo() 检查 HTTP 响应代码来检查错误和其他问题。

【讨论】:

    【解决方案2】:

    这真的很奇怪! ,它不应该像你得到的那样发生。但无论如何都可以这样尝试..

    获取httpresponse代码,然后检查...

    $curl = curl_init();
      curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
      curl_setopt($curl, CURLOPT_USERPWD, "admin:password");
      curl_setopt($curl, CURLOPT_URL, "http://server/r/?dst_user__substr='user'");
    
    
      curl_setopt($curl, CURLOPT_VERBOSE, 1);
      curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
      $ret = curl_exec($curl);
      $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
      if($httpcode==200)
      {
      $result = json_decode($ret,true);
      foreach ($result['data'] as $key => $value)
      {
            //process data from $result
      }
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-30
      • 1970-01-01
      • 2011-01-12
      • 2015-01-06
      • 1970-01-01
      • 2011-12-22
      相关资源
      最近更新 更多