From 86eb2323a2a9b7eefb1b63ae5737f778f9fc3a4c Mon Sep 17 00:00:00 2001 From: erikn69 Date: Mon, 21 Jul 2025 04:20:28 -0500 Subject: [PATCH] Slow threshold highlight on queries (#790) --- src/DebugBar/DataCollector/PDO/PDOCollector.php | 15 ++++++++++++++- .../Resources/widgets/sqlqueries/widget.css | 12 ++++++++++-- .../Resources/widgets/sqlqueries/widget.js | 3 +++ 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/src/DebugBar/DataCollector/PDO/PDOCollector.php b/src/DebugBar/DataCollector/PDO/PDOCollector.php index d8e6572..2fbbce2 100644 --- a/src/DebugBar/DataCollector/PDO/PDOCollector.php +++ b/src/DebugBar/DataCollector/PDO/PDOCollector.php @@ -22,6 +22,8 @@ class PDOCollector extends DataCollector implements Renderable, AssetProvider protected $durationBackground = false; + protected $slowThreshold; + /** * @param \PDO $pdo * @param TimeDataCollector $timeCollector @@ -55,6 +57,16 @@ class PDOCollector extends DataCollector implements Renderable, AssetProvider $this->durationBackground = $enabled; } + /** + * Highlights queries that exceed the threshold + * + * @param int|float $threshold miliseconds value + */ + public function setSlowThreshold($threshold) + { + $this->slowThreshold = $threshold; + } + /** * @return bool */ @@ -162,7 +174,8 @@ class PDOCollector extends DataCollector implements Renderable, AssetProvider 'end_memory_str' => $this->getDataFormatter()->formatBytes($stmt->getEndMemory()), 'is_success' => $stmt->isSuccess(), 'error_code' => $stmt->getErrorCode(), - 'error_message' => $stmt->getErrorMessage() + 'error_message' => $stmt->getErrorMessage(), + 'slow' => $this->slowThreshold && $this->slowThreshold <= $stmt->getDuration() ); if ($timeCollector !== null) { $timeCollector->addMeasure($stmt->getSql(), $stmt->getStartTime(), $stmt->getEndTime(), array(), $connectionName); diff --git a/src/DebugBar/Resources/widgets/sqlqueries/widget.css b/src/DebugBar/Resources/widgets/sqlqueries/widget.css index ba3ba61..9a016e1 100644 --- a/src/DebugBar/Resources/widgets/sqlqueries/widget.css +++ b/src/DebugBar/Resources/widgets/sqlqueries/widget.css @@ -98,12 +98,20 @@ code.phpdebugbar-widgets-sql { word-wrap: break-word; } +div.phpdebugbar-widgets-sqlqueries li.phpdebugbar-widgets-list-item.phpdebugbar-widgets-sql-slow { + background-color: #ffe4e4; +} + div.phpdebugbar-widgets-sqlqueries li.phpdebugbar-widgets-list-item.phpdebugbar-widgets-sql-duplicate { - background-color: #F7EDED; + background-color: #fdfdcd; +} + +div.phpdebugbar[data-theme='dark'] div.phpdebugbar-widgets-sqlqueries li.phpdebugbar-widgets-list-item.phpdebugbar-widgets-sql-slow { + background-color: #623100; } div.phpdebugbar[data-theme='dark'] div.phpdebugbar-widgets-sqlqueries li.phpdebugbar-widgets-list-item.phpdebugbar-widgets-sql-duplicate { - background-color: #473e00; + background-color: #565602; } div.phpdebugbar-widgets-sqlqueries div.phpdebugbar-widgets-toolbar { diff --git a/src/DebugBar/Resources/widgets/sqlqueries/widget.js b/src/DebugBar/Resources/widgets/sqlqueries/widget.js index 3c97036..31b19e8 100644 --- a/src/DebugBar/Resources/widgets/sqlqueries/widget.js +++ b/src/DebugBar/Resources/widgets/sqlqueries/widget.js @@ -74,6 +74,9 @@ var filters = [], self = this; this.$list = new PhpDebugBar.Widgets.ListWidget({ itemRenderer: function(li, stmt) { + if (stmt.slow) { + li.addClass(csscls('sql-slow')) + } if (stmt.width_percent) { $('
').addClass(csscls('bg-measure')).append( $('
').addClass(csscls('value')).css({