logAllQueries = $logAllQueries; $this->logQueryTime = $logQueryTime; $this->logCallStack = $logCallStack; } /** * {@inheritdoc} */ public function startTimer() { $this->timer = microtime(true); } /** * Get formatted statistics message * * @param string $type Type of query * @param string $sql * @param array $bind * @param \Zend_Db_Statement_Pdo|null $result * @return string * @throws \Zend_Db_Statement_Exception */ public function getStats($type, $sql, $bind = [], $result = null) { $message = '## ' . getmypid() . ' ## '; $nl = "\n"; $time = sprintf('%.4f', microtime(true) - $this->timer); if (!$this->logAllQueries && $time < $this->logQueryTime) { return ''; } switch ($type) { case self::TYPE_CONNECT: $message .= 'CONNECT' . $nl; break; case self::TYPE_TRANSACTION: $message .= 'TRANSACTION ' . $sql . $nl; break; case self::TYPE_QUERY: $message .= 'QUERY' . $nl; $message .= 'SQL: ' . $sql . $nl; if ($bind) { $message .= 'BIND: ' . var_export($bind, true) . $nl; } if ($result instanceof \Zend_Db_Statement_Pdo) { $message .= 'AFF: ' . $result->rowCount() . $nl; } break; } $message .= 'TIME: ' . $time . $nl; if ($this->logCallStack) { $message .= 'TRACE: ' . Debug::backtrace(true, false) . $nl; } $message .= $nl; return $message; } }