2015-08-07 4 views
5

Я пытаюсь профилировать запросы, сделанные на сервер API от клиента PHP, используя Guzzle (v 6).Как профилировать запросы Gzzle 6?

В Guzzle 5.3 есть complete и 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(); 
    } 
} 

Но как это сделать в v6?

ответ

1

Просто нашел это с помощью промежуточного программного обеспечения. Вот код.

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; 
       }); 
      }; 
     }; 
    } 
} 

А затем прикрепите профайлер следующим образом.

$stack = \GuzzleHttp\HandlerStack::create(); 
$stack->push(Profiler::profile()); 
$client = new \GuzzleHttp\Client([ 
    'handler' => $stack 
]); 
Смежные вопросы