fetchValue('SELECT @@have_profiling')) { SessionCache::set('profiling_supported', true); return true; } SessionCache::set('profiling_supported', false); return false; } public static function enable(DatabaseInterface $dbi): void { if (! isset($_SESSION['profiling']) || ! self::isSupported($dbi)) { return; } $dbi->query('SET PROFILING=1;'); } /** @psalm-return list */ public static function getInformation(DatabaseInterface $dbi): array { if (! isset($_SESSION['profiling']) || ! self::isSupported($dbi)) { return []; } /** @psalm-var list $profile */ $profile = $dbi->fetchResult('SHOW PROFILE;'); return $profile; } /** * Check if profiling was requested and remember it. */ public static function check(DatabaseInterface $dbi, ResponseRenderer $response): void { if (isset($_REQUEST['profiling']) && self::isSupported($dbi)) { $_SESSION['profiling'] = true; } elseif (isset($_REQUEST['profiling_form'])) { // the checkbox was unchecked unset($_SESSION['profiling']); } if (! isset($_SESSION['profiling'])) { return; } $scripts = $response->getHeader()->getScripts(); $scripts->addFiles([ 'vendor/chart.umd.js', 'vendor/jquery/jquery.tablesorter.js', ]); } }