2015-08-07 25 views
5

Sto provando a profilare le richieste fatte ad un server API da un client PHP usando Guzzle (v 6).Come faccio a profilare le richieste di Guzzle 6?

In the Guzzle 5.3 è presente la gestione degli eventi di complete e before.

class GuzzleProfiler implements SubscriberInterface 
{ 
    public function getEvents() 
    { 
     return [ 
      'before' => ['onBefore'], 
      'complete' => ['onComplete'] 
     ]; 
    } 

    public function onBefore(BeforeEvent $event, $name) 
    { 
     start_profiling(); 
    } 

    public function onComplete(CompleteEvent $event, $name) 
    { 
     end_profiling(); 
    } 
} 

Ma come faccio questo in v6?

risposta

1

L'ho appena trovato usando il middleware. Ecco il codice.

class Profiler { 

    /** 
    * @return callable 
    */ 
    public static function profile() { 
     return function(callable $handler) { 
      return function(\Psr\Http\Message\RequestInterface $request, array $options) use ($handler) { 
       start_profiling(); 
       return $handler($request, $options)->then(function(\Psr\Http\Message\ResponseInterface $response) use ($token) { 
        end_profiling(); 
        return $response; 
       }); 
      }; 
     }; 
    } 
} 

E quindi collegare il profiler in questo modo.

$stack = \GuzzleHttp\HandlerStack::create(); 
$stack->push(Profiler::profile()); 
$client = new \GuzzleHttp\Client([ 
    'handler' => $stack 
]);