php发送curl请求并等待响应

xxls0lw8  于 2022-11-13  发布在  PHP
关注(0)|答案(2)|浏览(238)

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

eblbsuwk1#

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

vlf7wbxs

vlf7wbxs2#

这真的很奇怪!,它不应该发生像你得到的。但无论如何尝试这样..
得到一个httpresonse代码,然后检查...

$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
  }
  }

相关问题