diff --git a/dibi/Nette/DibiNettePanel.php b/dibi/Nette/DibiNettePanel.php index fe2f041b..278b6717 100644 --- a/dibi/Nette/DibiNettePanel.php +++ b/dibi/Nette/DibiNettePanel.php @@ -101,9 +101,11 @@ class DibiNettePanel extends DibiObject implements IBarPanel */ public function getTab() { + $event = reset($this->events); + return '' - . dibi::$numOfQueries . ' queries' - . (dibi::$totalTime ? ' / ' . sprintf('%0.1f', dibi::$totalTime * 1000) . 'ms' : '') + . ($event ? $event->connection->numOfQueries : 0) . ' queries' + . ($event && $event->connection->totalTime ? ' / ' . sprintf('%0.1f', $event->connection->totalTime * 1000) . 'ms' : '') . ''; } @@ -121,12 +123,12 @@ class DibiNettePanel extends DibiObject implements IBarPanel $explain = NULL; // EXPLAIN is called here to work SELECT FOUND_ROWS() if ($this->explain && $event->type === DibiEvent::SELECT) { try { - $backup = array($event->connection->onEvent, dibi::$numOfQueries, dibi::$totalTime); + $backup = array($event->connection->onEvent, $event->connection->numOfQueries, $event->connection->totalTime, dibi::$numOfQueries, dibi::$totalTime); $event->connection->onEvent = NULL; $cmd = is_string($this->explain) ? $this->explain : ($event->connection->getConfig('driver') === 'oracle' ? 'EXPLAIN PLAN' : 'EXPLAIN'); $explain = dibi::dump($event->connection->nativeQuery("$cmd $event->sql"), TRUE); } catch (DibiException $e) {} - list($event->connection->onEvent, dibi::$numOfQueries, dibi::$totalTime) = $backup; + list($event->connection->onEvent, $event->connection->numOfQueries, $event->connection->totalTime, dibi::$numOfQueries, dibi::$totalTime) = $backup; } $s .= '' . sprintf('%0.3f', $event->time * 1000); @@ -155,7 +157,7 @@ class DibiNettePanel extends DibiObject implements IBarPanel ' -

Queries: ' . dibi::$numOfQueries . (dibi::$totalTime === NULL ? '' : ', time: ' . sprintf('%0.3f', dibi::$totalTime * 1000) . ' ms') . '

+

Queries: ' . (isset($event) ? $event->connection->numOfQueries : 0) . (isset($event) && $event->connection->totalTime === NULL ? '' : ', time: ' . sprintf('%0.3f', $event->connection->totalTime * 1000) . ' ms') . '

' . $s . ' diff --git a/dibi/libs/DibiConnection.php b/dibi/libs/DibiConnection.php index f5209b27..4dcfad16 100644 --- a/dibi/libs/DibiConnection.php +++ b/dibi/libs/DibiConnection.php @@ -44,6 +44,12 @@ class DibiConnection extends DibiObject /** @var DibiHashMap Substitutes for identifiers */ private $substitutes; + /** @var int Elapsed time for all queries */ + public $totalTime = 0; + + /** @var int Number or queries */ + public $numOfQueries = 0; + /** @@ -339,6 +345,7 @@ class DibiConnection extends DibiObject $this->connected || $this->connect(); $event = $this->onEvent ? new DibiEvent($this, DibiEvent::QUERY, $sql) : NULL; + $this->numOfQueries++; dibi::$numOfQueries++; dibi::$sql = $sql; try { diff --git a/dibi/libs/DibiEvent.php b/dibi/libs/DibiEvent.php index d41a244c..3dba8ea8 100644 --- a/dibi/libs/DibiEvent.php +++ b/dibi/libs/DibiEvent.php @@ -96,6 +96,7 @@ class DibiEvent $this->time += microtime(TRUE); dibi::$elapsedTime = $this->time; dibi::$totalTime += $this->time; + $this->connection->totalTime += $this->time; return $this; }
Time msSQL StatementRowsConnection