Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

php send curl request and wait for the response

Tags:

php

curl

I am sending a curl request to a server that needs a few seconds to process the request and spit out a response. I believe my php script is continuing on and not waiting, therefore my foreach loop based on the response is spitting out 0 results. How can i wait for the curl transaction to complete before moving on and processing data?

  $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
  }
like image 895
bart2puck Avatar asked Nov 06 '13 16:11

bart2puck


1 Answers

curl is blocking, which means that:

$result = json_decode($ret,true);

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

won't execute until:

$ret = curl_exec($curl);

is complete. You can check for errors and other issues using curl_error() and by checking the HTTP response code with curl_getinfo().

like image 170
Wayne Whitty Avatar answered Oct 05 '22 23:10

Wayne Whitty