2 declare(strict_types = 1);
19 use Psr\Http\Message\ServerRequestInterface;
43 return 'debug_queryinformation';
54 'LLL:EXT:adminpanel/Resources/Private/Language/locallang_debug.xlf:submodule.queryInformation.label'
65 $connectionPool = GeneralUtility::makeInstance(ConnectionPool::class);
67 $logger = $connection->getConfiguration()->getSQLLogger();
70 $queries = $logger->getQueries();
72 $data[
'totalTime'] = array_sum(array_column($queries,
'executionMS')) * 1000;
84 $view->setTemplatePathAndFilename(
85 'EXT:adminpanel/Resources/Private/Templates/Modules/Debug/QueryInformation.html'
88 $view->assignMultiple($data->getArrayCopy());
89 return $view->render();
99 foreach ($queries as $query) {
100 $identifier = sha1($query[
'sql']) . sha1(json_encode($query[
'backtrace']));
101 if (is_array($query[
'params'])) {
102 foreach ($query[
'params'] as $k => $param) {
103 if (is_array($param)) {
104 $query[
'params'][$k] = implode(
',', $param);
108 if (isset($groupedQueries[$identifier])) {
109 $groupedQueries[$identifier][
'count']++;
110 $groupedQueries[$identifier][
'time'] += ($query[
'executionMS'] * 1000);
111 $groupedQueries[$identifier][
'queries'][] = $query;
113 $groupedQueries[$identifier] = [
114 'sql' => $query[
'sql'],
115 'time' => $query[
'executionMS'] * 1000,
126 return $b[
'time'] <=> $a[
'time'];
129 return $groupedQueries;