Perisian tengah Laravel: Tambahkan pembalakan dan keupayaan pemantauan prestasi pada aplikasi anda

PHPz
Lepaskan: 2023-07-28 15:32:01
asal
905 orang telah melayarinya

Perisian tengah Laravel: Tambahkan keupayaan pengelogan dan pemantauan prestasi pada aplikasi

Pengenalan:
Pengelogan dan pemantauan prestasi ialah ciri yang sangat penting semasa membangunkan aplikasi web moden. Log boleh membantu pembangun menjejaki peristiwa, ralat dan pengecualian yang berlaku dalam aplikasi, manakala pemantauan prestasi boleh membantu pembangun mengenal pasti kesesakan prestasi dan mengoptimumkannya. Rangka kerja Laravel menyediakan keupayaan middleware yang berkuasa yang membolehkan pembangun menambahkan keupayaan pengelogan dan pemantauan prestasi dengan mudah pada aplikasi. Artikel ini akan memperkenalkan cara menggunakan perisian tengah Laravel untuk melaksanakan fungsi ini dan menyediakan contoh kod.

1. Apakah perisian tengah Laravel?
Laravel middleware ialah penapis yang boleh dilaksanakan sebelum atau selepas permintaan sampai ke aplikasi. Dengan menggunakan perisian tengah, pembangun boleh melakukan operasi pra-pemprosesan atau pasca-pemprosesan atas permintaan, seperti pengesahan, pengelogan, pemantauan prestasi, dsb. Middleware boleh menambah fungsi tambahan pada aplikasi dan menyediakan organisasi kod yang baik dan kebolehgunaan semula.

2. Tambahkan fungsi pengelogan pada aplikasi
Dalam Laravel, kita boleh menggunakan perisian tengah untuk menambah fungsi pengelogan pada aplikasi. Berikut ialah contoh mudah yang menunjukkan cara menggunakan middleware untuk log masa mula dan tamat setiap permintaan:

Mula-mula, buat middleware yang dipanggil LogMiddleware: LogMiddleware的中间件:

php artisan make:middleware LogMiddleware
Salin selepas log masuk

在生成的app/Http/Middleware/LogMiddleware.php文件中,添加以下代码:

<?php

namespace AppHttpMiddleware;

use Closure;
use IlluminateSupportFacadesLog;

class LogMiddleware
{
    public function handle($request, Closure $next)
    {
        $start = microtime(true);
        
        // 继续处理请求
        $response = $next($request);
        
        // 计算请求执行时间
        $end = microtime(true);
        $executionTime = $end - $start;
        
        // 记录日志
        Log::info('Request completed in ' . $executionTime . ' seconds');
        
        return $response;
    }
}
Salin selepas log masuk

然后,在app/Http/Kernel.php文件的$middleware数组中注册中间件:

protected $middleware = [
    // ...
    AppHttpMiddlewareLogMiddleware::class,
];
Salin selepas log masuk

现在,每次发起请求时,中间件将会记录请求的执行时间,并将其写入日志中。

三、为应用程序添加性能监控功能
除了日志记录外,我们还可以使用中间件来为应用程序添加性能监控功能。下面是一个简单的示例,展示如何使用中间件计算每个请求的执行时间,并将其记录下来:

首先,创建一个名为PerformanceMiddleware的中间件:

php artisan make:middleware PerformanceMiddleware
Salin selepas log masuk

在生成的app/Http/Middleware/PerformanceMiddleware.php文件中,添加以下代码:

<?php

namespace AppHttpMiddleware;

use Closure;
use IlluminateSupportFacadesDB;
use IlluminateSupportFacadesLog;

class PerformanceMiddleware
{
    public function handle($request, Closure $next)
    {
        $start = microtime(true);
        
        // 继续处理请求
        $response = $next($request);
        
        // 计算请求执行时间
        $end = microtime(true);
        $executionTime = $end - $start;
        
        // 获取SQL查询次数
        $queryCount = DB::getQueryLog();
        $queryCount = count($queryCount);
        
        // 记录性能信息
        Log::info('Request completed in ' . $executionTime . ' seconds');
        Log::info('Number of database queries: ' . $queryCount);
        
        return $response;
    }
}
Salin selepas log masuk

然后,在app/Http/Kernel.php文件的$middleware

protected $middleware = [
    // ...
    AppHttpMiddlewarePerformanceMiddleware::class,
];
Salin selepas log masuk
Dalam In the >app/Http/Middleware/LogMiddleware.php fail, tambahkan kod berikut:

rrreee

Kemudian, dalam fail app/Http/Kernel.php, $middleware tatasusunan: <p>rrreee<br>Kini, setiap kali permintaan dibuat, middleware akan merekodkan masa pelaksanaan permintaan dan menulisnya pada log. </p>🎜3. Tambahkan fungsi pemantauan prestasi pada aplikasi🎜Selain pengelogan, kami juga boleh menggunakan perisian tengah untuk menambah fungsi pemantauan prestasi pada aplikasi. Berikut ialah contoh mudah yang menunjukkan cara menggunakan middleware untuk mengira masa pelaksanaan setiap permintaan dan lognya: 🎜🎜Mula-mula, buat middleware yang dipanggil <code>PerformanceMiddleware: 🎜rrreee🎜In Dalam yang dihasilkan app/Http/Middleware/PerformanceMiddleware.php fail, tambahkan kod berikut: 🎜rrreee🎜Kemudian, dalam fail app/Http/Kernel.php Daftarkan middleware dalam $middleware tatasusunan: 🎜rrreee🎜Kini, setiap kali permintaan dibuat, middleware akan mengira masa pelaksanaan permintaan dan bilangan pertanyaan pangkalan data, dan menulisnya pada log untuk membantu analisis Prestasi pembangun. 🎜🎜Ringkasan: 🎜Dengan menggunakan perisian tengah Laravel, kami boleh menambah pengelogan dan keupayaan pemantauan prestasi dengan mudah pada aplikasi kami. Dalam artikel ini, kami menyediakan dua contoh yang menunjukkan cara menggunakan perisian tengah untuk merekodkan masa pelaksanaan permintaan dan bilangan pertanyaan pangkalan data dan menulisnya pada log. Dengan menggunakan perisian tengah ini, pembangun boleh lebih memahami cara aplikasi mereka berjalan dan menala serta mengoptimumkan dengan sewajarnya. Saya harap pembaca dapat memahami penggunaan middleware Laravel melalui artikel ini dan dapat mengaplikasikannya secara fleksibel dalam pembangunan sebenar. 🎜

Atas ialah kandungan terperinci Perisian tengah Laravel: Tambahkan pembalakan dan keupayaan pemantauan prestasi pada aplikasi anda. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan