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'); }
* @return bool */ private static function requiresDelegateToOriginalPrependFile() { return ini_get('tideways.auto_prepend_library') && tideways_prepend_overwritten() && ini_get("auto_prepend_file") && file_exists(stream_resolve_include_path(ini_get("auto_prepend_file"))); } } /** * Tidways Profiler * * LICENSE * * This source file is subject to the MIT license that is bundled * with this package in the file LICENSE.txt. * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to kontakt@beberlei.de so I can send you a copy immediately. */ namespace QafooLabs; /** * Backwards compatibility layer * * @deprecated use \Tideways\Profiler instead. */ class Profiler extends \Tideways\Profiler { } // auto-starts the profiler if that is configured \Tideways\Profiler::autoStart();
<?php use Symfony\Component\Finder\Finder; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\RedirectResponse; $app->before(function (Request $req) { if (!class_exists('Tideways\\Profiler')) { return; } $actionName = $req->get('_route'); if (strpos($actionName, '__') === 0) { $actionName = $req->get('_controller'); } \Tideways\Profiler::setTransactionName($req->getMethod() . ' ' . $actionName); }, 8); $app->get('/', function () use($app) { $logos = glob(__DIR__ . '/../web/img/logo-composer-transparent*.png'); $logo = basename($logos[array_rand($logos)]); return $app['twig']->render('index.html.twig', array('logo' => $logo)); })->bind('home'); $app->get('/download/', function () use($app) { $versions = array(); foreach (glob(__DIR__ . '/../web/download/*', GLOB_ONLYDIR) as $version) { $versions[basename($version)] = new \DateTime('@' . filemtime($version . '/composer.phar')); } uksort($versions, 'version_compare'); $versions = array_reverse($versions); $data = array('page' => 'download', 'versions' => $versions, 'windows' => false !== strpos($app['request']->headers->get('User-Agent'), 'Windows')); return $app['twig']->render('download.html.twig', $data); })->bind('download');
<?php require __DIR__ . '/../vendor/autoload.php'; require __DIR__ . '/../src/FileDumperBackend.php'; \Tideways\Profiler::setBackend(new \Cotya\TideGauge\FileDumperBackend()); \Tideways\Profiler::start(['api_key' => 'random_api_key', 'sample_rate' => 100]); \Tideways\Profiler::setTransactionName("cli:" . basename($_SERVER['argv'][0])); \Tideways\Profiler::watch('TestClass::FooBar'); \Tideways\Profiler::watch('Composer\\Autoload\\ClassLoader::loadClass'); class TestClass { public function __construct() { } public function FooBar() { } } function createRandomString() { $test = new TestClass(); $test->FooBar(); return "42"; } //ld('start test'); $strings = []; for ($i = 0; $i < 3; $i++) { $strings[] = createRandomString(); } \Tideways\Profiler::stop();