Laravel middleware: Tambahkan pertanyaan pangkalan data dan pemantauan prestasi pada aplikasi
Pengenalan:
Apabila membangunkan aplikasi web, pertanyaan data dan pemantauan prestasi adalah sangat penting. Laravel menyediakan cara yang mudah untuk mengendalikan keperluan ini, iaitu perisian tengah. Middleware ialah teknologi yang mengendalikan antara permintaan dan respons. Ia boleh melakukan beberapa logik sebelum permintaan mencapai pengawal atau selepas respons dikembalikan kepada pengguna. Artikel ini akan memperkenalkan cara menggunakan perisian tengah Laravel untuk melaksanakan pertanyaan pangkalan data dan pemantauan prestasi.
1. Cipta middleware
Pertama, kita perlu mencipta middleware. Cipta fail middleware baharu bernama QueryLogMiddleware dengan menjalankan arahan berikut:
php artisan make:middleware QueryLogMiddleware
Arahan ini akan menjana fail QueryLogMiddleware.php dalam direktori app/Http/Middleware. Sekarang, kita boleh menulis logik middleware kami dalam fail ini.
2. Laksanakan fungsi pengelogan pertanyaan pangkalan data
Untuk menambah fungsi pengelogan pertanyaan pangkalan data, kita boleh menggunakan fasad DB (Fasad) Laravel dalam kaedah pemegang middleware untuk mendapatkan semua pertanyaan SQL dan merekodkannya ke fail log. Berikut ialah contoh kod:
<?php namespace AppHttpMiddleware; use Closure; use IlluminateSupportFacadesDB; class QueryLogMiddleware { public function handle($request, Closure $next) { DB::connection()->enableQueryLog(); $response = $next($request); $queries = DB::getQueryLog(); foreach ($queries as $query) { // 将$query写入日志文件 } return $response; } }
Dalam kod di atas, kami mula-mula memanggil kaedah enableQueryLog fasad DB untuk mendayakan fungsi pengelogan pertanyaan. Kemudian, selepas permintaan itu melalui rantaian middleware, kami memanggil kaedah getQueryLog untuk mendapatkan semua log pertanyaan. Akhir sekali, kita boleh mengulangi log pertanyaan dan menulis setiap rekod pertanyaan ke fail log.
3. Tambah fungsi pemantauan prestasi
Selain merekodkan log pertanyaan, kami juga boleh menggunakan perisian tengah untuk melaksanakan fungsi pemantauan prestasi. Sebagai contoh, kami boleh menggunakan pakej sambungan Debugbar Laravel untuk memantau masa tindak balas aplikasi kami. Berikut ialah contoh kod:
<?php namespace AppHttpMiddleware; use Closure; use BarryvdhDebugbarFacade as Debugbar; class PerformanceMiddleware { public function handle($request, Closure $next) { $start = microtime(true); $response = $next($request); $end = microtime(true); $executionTime = $end - $start; Debugbar::addMeasure('Execution Time', $start, $end); return $response; } }
Dalam kod di atas, kami menggunakan Facade of the Debugbar extension package untuk menambah penunjuk prestasi yang dipanggil "Masa Pelaksanaan" dan mengira masa pelaksanaan permintaan. Kami juga boleh menambah penunjuk prestasi lain, seperti bilangan pertanyaan pangkalan data, penggunaan memori, dsb.
4. Daftar middleware
Sekarang, kita perlu mendaftarkan middleware ini ke dalam aplikasi. Buka fail app/Http/Kernel.php dan tambahkan kod berikut dalam atribut $middlewareGroups:
protected $middlewareGroups = [ 'web' => [ // 其他中间件... AppHttpMiddlewareQueryLogMiddleware::class, AppHttpMiddlewarePerformanceMiddleware::class, ], // 其他中间件组... ];
Ini akan menambah QueryLogMiddleware dan PerformanceMiddleware pada kumpulan middleware web, bermakna ia akan dilaksanakan semasa permintaan web.
5 Menggunakan middleware
Kini, kita boleh menggunakan middleware ini dalam mana-mana laluan atau kaedah pengawal dalam aplikasi. Contohnya, dalam fail route/web.php, kita boleh menggunakan:
Route::middleware('query.log', 'performance')->group(function () { // 路由定义... });
Contoh ini menunjukkan cara menggunakan perisian tengah pada kumpulan laluan. Anda juga boleh menggunakan perisian tengah pada laluan individu atau kaedah pengawal.
Kesimpulan:
Dengan menggunakan teknologi middleware Laravel, kami boleh menambahkan pertanyaan pangkalan data dan keupayaan pemantauan prestasi dengan mudah pada aplikasi kami. Seperti yang ditunjukkan di atas, kami mencipta QueryLogMiddleware untuk merekodkan log pertanyaan pangkalan data dan menggunakan PerformanceMiddleware untuk memantau prestasi aplikasi. Perisian tengah ini boleh meningkatkan aplikasi kami dengan pendaftaran dan penggunaan yang mudah, menjadikannya lebih berkuasa dan boleh dipercayai.
Atas ialah kandungan terperinci Laravel middleware: Tambahkan pertanyaan pangkalan data dan pemantauan prestasi pada aplikasi anda. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!