*/ private array $slowQueries = []; public function start(): void { $this->active = true; $this->queryCount = 0; $this->databaseTimeMs = 0.0; $this->slowQueries = []; } /** * @return array{database_time_ms: float, query_count: int, slow_queries: list} */ public function snapshot(): array { return [ 'database_time_ms' => round($this->databaseTimeMs, 2), 'query_count' => $this->queryCount, 'slow_queries' => $this->slowQueries, ]; } public function stop(): void { $this->active = false; } public function record(QueryExecuted $query): void { if (! $this->active) { return; } $this->queryCount++; $this->databaseTimeMs += $query->time; if ($query->time < $this->slowQueryThresholdMs()) { return; } if (count($this->slowQueries) >= $this->maxSlowQueries()) { return; } $this->slowQueries[] = [ 'sql' => $query->sql, 'time_ms' => round($query->time, 2), 'connection' => $query->connectionName, ]; } private function slowQueryThresholdMs(): int { return (int) config('admin_performance.slow_requests.slow_query_threshold_ms', 50); } private function maxSlowQueries(): int { return max(0, (int) config('admin_performance.slow_requests.max_slow_queries', 5)); } }