Пример #1
0
 public static function load()
 {
     if (!class_exists('Tideways\\Profiler')) {
         return;
     }
     \Tideways\Profiler::watchCallback('Cake\\Controller\\Controller::invokeAction', function ($context) {
         $controller = $context['object'];
         if (!$controller->request || !$controller->isAction($controller->request->params['action'])) {
             return;
         }
         $title = get_class($controller) . '::' . $controller->request->params['action'];
         $span = \Tideways\Profiler::createSpan('php.ctrl');
         $span->annotate(['title' => $title]);
         return $span->getId();
     });
     \Tideways\Profiler::watchCallback('Cake\\View\\View::render', function ($context) {
         $view = $context['args'][0] ?: get_class($context['object']);
         $span = \Tideways\Profiler::createSpan('view');
         $span->annotate(['title' => $view]);
         return $span->getId();
     });
     \Tideways\Profiler::watchCallback('Cake\\Event\\EventManager::dispatch', function ($context) {
         $event = is_object($context['args'][0]) ? $context['args'][0]->name() : $context['args'][0];
         $span = \Tideways\Profiler::createSpan('event');
         $span->annotate(['title' => $event]);
         return $span->getId();
     });
     \Tideways\Profiler::watchCallback('Cake\\Event\\EventManager::_callListener', function ($context) {
         $listener = $context['args'][0];
         if (is_array($listener)) {
             $title = get_class($listener[0]) . '::' . $listener[1];
         } else {
             return;
             // only support object listeners
         }
         $span = \Tideways\Profiler::createSpan('php');
         $span->annotate(['title' => $title]);
         return $span->getId();
     });
     \Tideways\Profiler::watch('Cake\\ORM\\Table::schema');
 }