PHP 发送 curl 请求并等待响应


php send curl request and wait for the response

我正在向服务器发送一个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
  }

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 响应代码来检查错误和其他问题。

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

获取 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($curl, CURLINFO_HTTP_CODE);
  if($httpcode==200)
  {
  $result = json_decode($ret,true);
  foreach ($result['data'] as $key => $value)
  {
        //process data from $result
  }
  }