From 808f56e27ff5ba54c7cc2d4dcb6a7778876c12ff Mon Sep 17 00:00:00 2001 From: forecho Date: Mon, 27 Jul 2020 11:36:25 +0800 Subject: [PATCH] refactor: refactor requestId --- _ide_helper.php | 25 +++++++++++ commands/HelloController.php | 3 +- composer.json | 3 +- composer.lock | 69 +++++++++++++++++++++++++++---- config/common.php | 12 ++++++ config/console.php | 1 - config/web.php | 4 -- controllers/SiteController.php | 3 +- core/behaviors/LoggerBehavior.php | 58 +------------------------- core/services/UserService.php | 3 +- grumphp.yml | 1 + 11 files changed, 106 insertions(+), 76 deletions(-) create mode 100644 _ide_helper.php diff --git a/_ide_helper.php b/_ide_helper.php new file mode 100644 index 0000000..e7dd33b --- /dev/null +++ b/_ide_helper.php @@ -0,0 +1,25 @@ + LoggerBehavior::getRequestId(), 'test_request_id']); + \Yii::error(['request_id' => \Yii::$app->requestId->id, 'test_request_id']); return ExitCode::OK; } } diff --git a/composer.json b/composer.json index d60e18e..b1e9f48 100644 --- a/composer.json +++ b/composer.json @@ -37,7 +37,8 @@ "codeception/module-rest": "^1.0.0", "codeception/module-phpbrowser": "^1.0.0", "squizlabs/php_codesniffer": "^3.5.5", - "phpro/grumphp": "^0.19.1" + "phpro/grumphp": "^0.19.1", + "mis/yii2-ide-helper": "^1.0" }, "config": { "process-timeout": 1800, diff --git a/composer.lock b/composer.lock index 6b3bf04..863cf7f 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "fd28642d2b7596c78eebd3126ab0af9d", + "content-hash": "2d3d6560950635bd039ba0eca81ed31b", "packages": [ { "name": "bower-asset/inputmask", @@ -32,7 +32,7 @@ "version": "3.5.1", "source": { "type": "git", - "url": "git@github.com:jquery/jquery-dist.git", + "url": "https://github.com/jquery/jquery-dist.git", "reference": "4c0e4becb8263bb5b3e6dadc448d8e7305ef8215" }, "dist": { @@ -50,7 +50,7 @@ "version": "v1.3.2", "source": { "type": "git", - "url": "https://github.com/bestiejs/punycode.js.git", + "url": "git@github.com:bestiejs/punycode.js.git", "reference": "38c8d3131a82567bfef18da09f7f4db68c84f8a3" }, "dist": { @@ -1161,16 +1161,16 @@ }, { "name": "yiier/yii2-helpers", - "version": "2.0.5", + "version": "v2.1.0", "source": { "type": "git", "url": "https://github.com/yiier/yii2-helpers.git", - "reference": "e76352e35d1086cb88b39b5ccd024e06b2437fb3" + "reference": "3b5c8e8fed3dd3db9bffc858db0ee2aa117645ca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/yiier/yii2-helpers/zipball/e76352e35d1086cb88b39b5ccd024e06b2437fb3", - "reference": "e76352e35d1086cb88b39b5ccd024e06b2437fb3", + "url": "https://api.github.com/repos/yiier/yii2-helpers/zipball/3b5c8e8fed3dd3db9bffc858db0ee2aa117645ca", + "reference": "3b5c8e8fed3dd3db9bffc858db0ee2aa117645ca", "shasum": "" }, "require": { @@ -1199,7 +1199,7 @@ "helpers", "yii2" ], - "time": "2020-07-19T09:35:00+00:00" + "time": "2020-07-27T03:15:07+00:00" }, { "name": "yiisoft/yii2", @@ -3210,6 +3210,59 @@ ], "time": "2020-05-27T16:41:55+00:00" }, + { + "name": "mis/yii2-ide-helper", + "version": "v1.0.2", + "source": { + "type": "git", + "url": "https://github.com/takashiki/yii2-ide-helper.git", + "reference": "51b25fbad8b4be1ac056acc242b2e8c4193cf2e4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/takashiki/yii2-ide-helper/zipball/51b25fbad8b4be1ac056acc242b2e8c4193cf2e4", + "reference": "51b25fbad8b4be1ac056acc242b2e8c4193cf2e4", + "shasum": "" + }, + "require": { + "php": ">=5.4.0", + "yiisoft/yii2": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "Mis\\IdeHelper\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "takashiki", + "email": "857995137@qq.com" + } + ], + "description": "Yii2 IDE Helper, generates correct PHPDocs for all components, to improve auto-completion.", + "keywords": [ + "autocomplete", + "codeintel", + "helper", + "ide", + "netbeans", + "phpdoc", + "phpstorm", + "sublime", + "yii2" + ], + "time": "2016-11-22T01:26:36+00:00" + }, { "name": "monolog/monolog", "version": "2.1.0", diff --git a/config/common.php b/config/common.php index cec1c4a..e9edae8 100644 --- a/config/common.php +++ b/config/common.php @@ -4,7 +4,19 @@ 'timeZone' => env('APP_TIME_ZONE'), 'language' => env('APP_LANGUAGE'), 'name' => env('APP_NAME'), + 'bootstrap' => ['log', 'ideHelper', \app\core\EventBootstrap::class], 'components' => [ + 'ideHelper' => [ + 'class' => 'Mis\IdeHelper\IdeHelper', + 'configFiles' => [ + 'config/web.php', + 'config/common.php', + 'config/console.php', + ], + ], + 'requestId' => [ + 'class' => \yiier\helpers\RequestId::class, + ], 'cache' => [ 'class' => 'yii\caching\FileCache', ], diff --git a/config/console.php b/config/console.php index 6c1d3f6..1355487 100644 --- a/config/console.php +++ b/config/console.php @@ -6,7 +6,6 @@ $config = [ 'id' => 'basic-console', 'basePath' => dirname(__DIR__), - 'bootstrap' => ['log'], 'controllerNamespace' => 'app\commands', 'aliases' => [ '@bower' => '@vendor/bower-asset', diff --git a/config/web.php b/config/web.php index 1a3143f..2f61afe 100644 --- a/config/web.php +++ b/config/web.php @@ -8,10 +8,6 @@ $config = [ 'id' => 'basic', 'basePath' => dirname(__DIR__), - 'bootstrap' => [ - 'log', - \app\core\EventBootstrap::class, - ], 'aliases' => [ '@bower' => '@vendor/bower-asset', '@npm' => '@vendor/npm-asset', diff --git a/controllers/SiteController.php b/controllers/SiteController.php index ced90a0..3fa50b0 100644 --- a/controllers/SiteController.php +++ b/controllers/SiteController.php @@ -4,7 +4,6 @@ namespace app\controllers; -use app\core\behaviors\LoggerBehavior; use Yii; use yii\rest\Controller; @@ -34,7 +33,7 @@ public function actionError(): array $exception = Yii::$app->errorHandler->exception; if ($exception !== null) { Yii::error([ - 'request_id' => LoggerBehavior::getRequestId(), + 'request_id' => Yii::$app->requestId->id, 'exception' => $exception->getMessage(), 'line' => $exception->getLine(), 'file' => $exception->getFile(), diff --git a/core/behaviors/LoggerBehavior.php b/core/behaviors/LoggerBehavior.php index af95db7..425229f 100644 --- a/core/behaviors/LoggerBehavior.php +++ b/core/behaviors/LoggerBehavior.php @@ -8,25 +8,9 @@ use yii\helpers\Json; use yii\web\Controller; use yii\web\Response; -use yiier\helpers\Security; class LoggerBehavior extends Behavior { - /** - * @var string - */ - public static $delimiter = '-'; - - /** - * @var string - */ - public static $requestIdParamName = 'X_REQUEST_ID'; - - /** - * @var string - */ - public static $requestIdHeaderName = 'X-Request-ID'; - public function events() { return [ @@ -43,7 +27,7 @@ public function beforeSend($event) { $response = $event->sender; $request = \Yii::$app->request; - $requestId = self::getRequestId(); + $requestId = Yii::$app->requestId->id; $code = ArrayHelper::getValue($response->data, 'code'); $message = [ 'request_id' => $requestId, @@ -59,44 +43,6 @@ public function beforeSend($event) public function beforeAction() { - return self::getRequestId(); - } - - /** - * @return string - */ - public static function getRequestId() - { - try { - $console = Yii::$app instanceof \yii\console\Application; - if ( - (!$console) && - $requestId = ArrayHelper::getValue(Yii::$app->request->getHeaders(), self::$requestIdHeaderName) - ) { - $tmp = explode(self::$delimiter, $requestId); - if (count($tmp) < 2) { - $tmp = self::genRequestId(); - } - $tmp[1] = (int)$tmp[1] + 1; - $requestId = sprintf('%s%s%04d', $tmp[0], self::$delimiter, $tmp[1]); - } elseif (!$requestId = ArrayHelper::getValue(Yii::$app->params, self::$requestIdParamName)) { - $requestId = self::genRequestId(); - ; - } - \Yii::$app->params[self::$requestIdParamName] = $requestId; - } catch (\Exception $e) { - Yii::error($e, __FUNCTION__); - $requestId = null; - } - return $requestId; - } - - /** - * @return string - * @throws \Exception - */ - private static function genRequestId() - { - return sprintf('%s%s%04d', Security::generateRealUniqId(20), self::$delimiter, 0); + return Yii::$app->requestId->id; } } diff --git a/core/services/UserService.php b/core/services/UserService.php index 2f351a9..7a9db80 100644 --- a/core/services/UserService.php +++ b/core/services/UserService.php @@ -2,7 +2,6 @@ namespace app\core\services; -use app\core\behaviors\LoggerBehavior; use app\core\exceptions\InternalException; use app\core\models\User; use app\core\requests\JoinRequest; @@ -33,7 +32,7 @@ public function createUser(JoinRequest $request): User } } catch (Exception $e) { Yii::error( - ['request_id' => LoggerBehavior::getRequestId(), $user->attributes, $user->errors, (string)$e], + ['request_id' => Yii::$app->requestId->id, $user->attributes, $user->errors, (string)$e], __FUNCTION__ ); throw new InternalException($e->getMessage()); diff --git a/grumphp.yml b/grumphp.yml index 5283152..48c3c53 100644 --- a/grumphp.yml +++ b/grumphp.yml @@ -8,3 +8,4 @@ grumphp: - ./vendor/* - ./runtime/* - ./requirements.php + - ./_ide_helper.php