From c027ffe2dfc9c58e242719939d544f6111cf2c35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Kv=C3=A1=C4=8Dek?= Date: Wed, 22 Feb 2017 08:54:26 +0100 Subject: [PATCH] FEATURE: add first basics of profiler --- modules/Profiler/Config/config.php | 12 ++++++ modules/Profiler/Database/Migrations/.gitkeep | 0 ..._02_22_014824_create_queries_log_table.php | 33 ++++++++++++++ ...017_02_22_021253_create_http_log_table.php | 35 +++++++++++++++ modules/Profiler/Database/Seeders/.gitkeep | 0 .../Seeders/ProfilerDatabaseSeeder.php | 20 +++++++++ modules/Profiler/Entities/HttpLog.php | 14 ++++++ modules/Profiler/Entities/QueryLog.php | 17 ++++++++ modules/Profiler/Http/Controllers/.gitkeep | 0 .../Http/Controllers/ProfilerController.php | 12 ++++++ modules/Profiler/Http/Middleware/.gitkeep | 0 modules/Profiler/Http/Requests/.gitkeep | 0 modules/Profiler/Http/routes.php | 6 +++ modules/Profiler/Middleware/Profiler.php | 43 +++++++++++++++++++ .../ProfilerEventServiceProvider.php | 8 ++++ .../Providers/ProfilerServiceProvider.php | 40 +++++++++++++++++ modules/Profiler/Repositories/.gitkeep | 0 modules/Profiler/Resources/lang/.gitkeep | 0 modules/Profiler/Resources/views/.gitkeep | 0 .../Profiler/Resources/views/index.blade.php | 11 +++++ .../Resources/views/layouts/master.blade.php | 12 ++++++ modules/Profiler/composer.json | 15 +++++++ modules/Profiler/start.php | 15 +++++++ 23 files changed, 293 insertions(+) create mode 100644 modules/Profiler/Config/config.php create mode 100644 modules/Profiler/Database/Migrations/.gitkeep create mode 100644 modules/Profiler/Database/Migrations/2017_02_22_014824_create_queries_log_table.php create mode 100644 modules/Profiler/Database/Migrations/2017_02_22_021253_create_http_log_table.php create mode 100644 modules/Profiler/Database/Seeders/.gitkeep create mode 100644 modules/Profiler/Database/Seeders/ProfilerDatabaseSeeder.php create mode 100644 modules/Profiler/Entities/HttpLog.php create mode 100644 modules/Profiler/Entities/QueryLog.php create mode 100644 modules/Profiler/Http/Controllers/.gitkeep create mode 100644 modules/Profiler/Http/Controllers/ProfilerController.php create mode 100644 modules/Profiler/Http/Middleware/.gitkeep create mode 100644 modules/Profiler/Http/Requests/.gitkeep create mode 100644 modules/Profiler/Http/routes.php create mode 100644 modules/Profiler/Middleware/Profiler.php create mode 100644 modules/Profiler/Providers/ProfilerEventServiceProvider.php create mode 100644 modules/Profiler/Providers/ProfilerServiceProvider.php create mode 100644 modules/Profiler/Repositories/.gitkeep create mode 100644 modules/Profiler/Resources/lang/.gitkeep create mode 100644 modules/Profiler/Resources/views/.gitkeep create mode 100644 modules/Profiler/Resources/views/index.blade.php create mode 100644 modules/Profiler/Resources/views/layouts/master.blade.php create mode 100644 modules/Profiler/composer.json create mode 100644 modules/Profiler/start.php diff --git a/modules/Profiler/Config/config.php b/modules/Profiler/Config/config.php new file mode 100644 index 00000000..cbc4324d --- /dev/null +++ b/modules/Profiler/Config/config.php @@ -0,0 +1,12 @@ + 'Profiler', + 'translatedName' => 'profiler::module.name', + 'translatedDescription' => 'profiler::module.description', + 'alias' => 'profiler', + 'handler' => \Modules\Blog\Article\Handlers\Article::class, + 'providers' => [\Modules\Blog\Article\Providers\ArticleServiceProvider::class], + 'files' => ['start.php'], + 'order' => 0, +]; \ No newline at end of file diff --git a/modules/Profiler/Database/Migrations/.gitkeep b/modules/Profiler/Database/Migrations/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/modules/Profiler/Database/Migrations/2017_02_22_014824_create_queries_log_table.php b/modules/Profiler/Database/Migrations/2017_02_22_014824_create_queries_log_table.php new file mode 100644 index 00000000..754e1866 --- /dev/null +++ b/modules/Profiler/Database/Migrations/2017_02_22_014824_create_queries_log_table.php @@ -0,0 +1,33 @@ +increments('id'); + $table->timestamps(); + $table->text('query'); + $table->text('bindings'); + $table->double('time'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::drop('queries_log'); + } +} diff --git a/modules/Profiler/Database/Migrations/2017_02_22_021253_create_http_log_table.php b/modules/Profiler/Database/Migrations/2017_02_22_021253_create_http_log_table.php new file mode 100644 index 00000000..77b44cc4 --- /dev/null +++ b/modules/Profiler/Database/Migrations/2017_02_22_021253_create_http_log_table.php @@ -0,0 +1,35 @@ +increments('id'); + $table->timestamps(); + $table->string('method'); + $table->text('url'); + $table->double('time'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::drop('http_log'); + } + +} diff --git a/modules/Profiler/Database/Seeders/.gitkeep b/modules/Profiler/Database/Seeders/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/modules/Profiler/Database/Seeders/ProfilerDatabaseSeeder.php b/modules/Profiler/Database/Seeders/ProfilerDatabaseSeeder.php new file mode 100644 index 00000000..b618393b --- /dev/null +++ b/modules/Profiler/Database/Seeders/ProfilerDatabaseSeeder.php @@ -0,0 +1,20 @@ +call("OthersTableSeeder"); + } + +} \ No newline at end of file diff --git a/modules/Profiler/Entities/HttpLog.php b/modules/Profiler/Entities/HttpLog.php new file mode 100644 index 00000000..6640d90a --- /dev/null +++ b/modules/Profiler/Entities/HttpLog.php @@ -0,0 +1,14 @@ + 'array' + ]; +} \ No newline at end of file diff --git a/modules/Profiler/Http/Controllers/.gitkeep b/modules/Profiler/Http/Controllers/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/modules/Profiler/Http/Controllers/ProfilerController.php b/modules/Profiler/Http/Controllers/ProfilerController.php new file mode 100644 index 00000000..75768f6e --- /dev/null +++ b/modules/Profiler/Http/Controllers/ProfilerController.php @@ -0,0 +1,12 @@ + 'web', 'prefix' => 'profiler', 'namespace' => 'Modules\Profiler\Http\Controllers'], function() +{ + Route::get('/', 'ProfilerController@index'); +}); \ No newline at end of file diff --git a/modules/Profiler/Middleware/Profiler.php b/modules/Profiler/Middleware/Profiler.php new file mode 100644 index 00000000..50bf958a --- /dev/null +++ b/modules/Profiler/Middleware/Profiler.php @@ -0,0 +1,43 @@ +logRequest($request); + $this->logQueries(); + } + + protected function logRequest(Request $request) + { + $url = $request->fullUrl(); + $method = $request->getMethod(); + $time = (microtime(true) - LARAVEL_START) * 1000; + + HttpLog::create(['url' => $url, 'method' => $method, 'time' => $time]); + } + + protected function logQueries() + { + $queries = \DB::getQueryLog(); + + foreach ($queries as $query) { + QueryLog::create([ + 'query' => $query['query'], + 'bindings' => $query['bindings'], + 'time' => $query['time'] + ]); + } + } +} \ No newline at end of file diff --git a/modules/Profiler/Providers/ProfilerEventServiceProvider.php b/modules/Profiler/Providers/ProfilerEventServiceProvider.php new file mode 100644 index 00000000..707b75ce --- /dev/null +++ b/modules/Profiler/Providers/ProfilerEventServiceProvider.php @@ -0,0 +1,8 @@ +alias = 'profiler'; + } + + + /** + * Boot the application events. + * + * @return void + */ + public function boot() + { + parent::boot(); + + $this->app->register(ProfilerEventServiceProvider::class); + } + + public function register() + { + parent::register(); + + $this->app['router']->prependMiddlewareToGroup('web', Profiler::class); +// $this->app['router']->prependMiddlewareToGroup('admin', Profiler::class); + } + + + protected function setModulePath() + { + $this->path = __DIR__; + } +} \ No newline at end of file diff --git a/modules/Profiler/Repositories/.gitkeep b/modules/Profiler/Repositories/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/modules/Profiler/Resources/lang/.gitkeep b/modules/Profiler/Resources/lang/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/modules/Profiler/Resources/views/.gitkeep b/modules/Profiler/Resources/views/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/modules/Profiler/Resources/views/index.blade.php b/modules/Profiler/Resources/views/index.blade.php new file mode 100644 index 00000000..0b3a478a --- /dev/null +++ b/modules/Profiler/Resources/views/index.blade.php @@ -0,0 +1,11 @@ +@extends('profiler::layouts.master') + +@section('content') + +

Hello World

+ +

+ This view is loaded from module: {!! config('profiler.name') !!} +

+ +@stop \ No newline at end of file diff --git a/modules/Profiler/Resources/views/layouts/master.blade.php b/modules/Profiler/Resources/views/layouts/master.blade.php new file mode 100644 index 00000000..6f9601eb --- /dev/null +++ b/modules/Profiler/Resources/views/layouts/master.blade.php @@ -0,0 +1,12 @@ + + + + + + + Module Profiler + + + @yield('content') + + \ No newline at end of file diff --git a/modules/Profiler/composer.json b/modules/Profiler/composer.json new file mode 100644 index 00000000..d191be60 --- /dev/null +++ b/modules/Profiler/composer.json @@ -0,0 +1,15 @@ +{ + "name": "pingpong-modules/profiler", + "description": "", + "authors": [ + { + "name": "Pingpong Labs", + "email": "pingpong.labs@gmail.com" + } + ], + "autoload": { + "psr-4": { + "Modules\\Profiler\\": "" + } + } +} \ No newline at end of file diff --git a/modules/Profiler/start.php b/modules/Profiler/start.php new file mode 100644 index 00000000..7be329cb --- /dev/null +++ b/modules/Profiler/start.php @@ -0,0 +1,15 @@ +