Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Guzzle pool in PHP application

I am trying to use Guzzle pool in PHP. But I am having difficulty in dealing with ASYNC request. Below is the code snippet.

    $client = new \GuzzleHttp\Client();

    function test() 
    {
        $client = new \GuzzleHttp\Client();   
        $request = $client->createRequest('GET', 'http://l/?n=0', ['future' => true]);

        $client->send($request)->then(function ($response) {
            //echo 'Got a response! ' . $response;
            return "\n".$response->getBody();
        });

    }
    $res = test();
    var_dump($res); // echoes null - I know why it does so but how to resolve the issue.

Does anybody how can I make function wait and get the correct result.

like image 849
nicholasnet Avatar asked May 02 '26 05:05

nicholasnet


1 Answers

If you could return it it wouldn't be async in code style. Return the promise and unwrap it on the outside.

function test() 
{
   $client = new \GuzzleHttp\Client();   
   $request = $client->createRequest('GET', 'http://l/?n=0', ['future' => true]);

   // note the return
   return $client->send($request)->then(function ($response) {
       //echo 'Got a response! ' . $response;
       return "\n".$response->getBody();
   });   
}
test()->then(function($body){
     echo $body; // access body here inside `then`
});
like image 100
Benjamin Gruenbaum Avatar answered May 04 '26 18:05

Benjamin Gruenbaum



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!