diff --git a/Database/Command.php b/Database/Command.php index 363f3618..3b59f078 100644 --- a/Database/Command.php +++ b/Database/Command.php @@ -11,9 +11,11 @@ namespace Database; use Exception; +use JetBrains\PhpStorm\Pure; use PDO; use PDOStatement; use Snowflake\Abstracts\Component; +use Snowflake\Core\Json; use Swoole\Coroutine; /** @@ -120,23 +122,46 @@ class Command extends Component */ private function execute($type, $isInsert = null, $hasAutoIncrement = null): int|bool|array|string|null { + $time = microtime(true); try { - $time = microtime(true); if ($type === static::EXECUTE) { $result = $this->insert_or_change($isInsert, $hasAutoIncrement); } else { $result = $this->search($type); } - if (microtime(true) - $time >= 0.02) { + if (microtime(true) - $time >= 0.03) { $this->warning('execute sql Worker.' . env('worker') . '.' . Coroutine::getCid() . '`' . $this->sql . '` use time ' . (microtime(true) - $time)); } - return $result; } catch (\Throwable $exception) { - return $this->addError($this->sql . '. error: ' . $exception->getMessage(), 'mysql'); + $message = $this->sql . '. error: ' . $exception->getMessage(); + + $result = $this->addError($message, 'mysql'); + } finally { + return $this->setExecuteLog($time, $result); } } + /** + * @param $time + * @param $result + * @return mixed + * @throws Exception + */ + #[Pure] private function setExecuteLog($time, $result): mixed + { + $export['sql'] = $this->sql; + $export['param'] = $this->params; + $export['startTime'] = $time; + $export['endTime'] = microtime(true); + $export['time'] = $export['endTime'] - $time; + + logger()->debug(Json::encode($export), 'mysql'); + + return $result; + } + + /** * @param $type * @return mixed