Skip to main content
📝 Applications Laravel

🚀 Comment Détecter et Enregistrer les Requêtes Lentes dans Laravel Comme un Pro

Apprenez à détecter et enregistrer les requêtes lentes dans Laravel. Configurez le logging des requêtes, utilisez Telescope, optimisez les performances et trouvez les goulots.

3 min

Temps de lecture

595

Mots

Apr 04, 2025

Publié

Engr Mejba Ahmed

Écrit par

Engr Mejba Ahmed

Partager l'article

🚀 Comment Détecter et Enregistrer les Requêtes Lentes dans Laravel Comme un Pro

Vous luttez contre des performances lentes dans votre application Laravel ? Vous n'êtes pas seul.

L'une des causes les plus courantes d'applications lentes sont les requêtes de base de données lentes — et les identifier tôt peut vous économiser des heures de débogage, des plaintes d'utilisateurs et une perte de trafic. Heureusement, Laravel facilite l'enregistrement des requêtes lentes avec seulement quelques lignes de code.

Dans cet article, je vous guiderai à travers une approche étape par étape pour détecter et enregistrer les requêtes lentes dans Laravel — même si vous pratiquez simplement avec des données fictives.


🧠 Pourquoi Devriez-vous Suivre les Requêtes Lentes ?

Avant de plonger dans le code, comprenons pourquoi c'est important :

  • 🐢 Les requêtes lentes ralentissent toute votre application
  • 🧩 Elles peuvent indiquer des index manquants, une mauvaise structure de requête ou des jointures inutiles
  • 💰 Dans une application en production, elles peuvent vous coûter des utilisateurs — et du chiffre d'affaires

Pouvoir suivre et enregistrer ces requêtes est un moyen puissant de prendre le contrôle des performances.


🛠️ Étape 1 : Activer l'Enregistrement des Requêtes dans Laravel

Dans AppServiceProvider.php, ajoutez ce qui suit à la méthode boot() :

use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;

public function boot()
{
    DB::enableQueryLog();

    DB::whenQueryingForLongerThan(1000, function ($connection) {
        Log::warning('⚠️ Long running queries detected:', $connection->getQueryLog());
    });
}

🕐 Ceci enregistre toute requête prenant plus de 1000ms (1 seconde).

Vous pouvez ajuster le seuil selon vos besoins — même jusqu'à 50ms pour les environnements de développement.


🧪 Étape 2 : Créer des Données Fictives pour les Tests

Utilisez un seeder pour simuler un jeu de données réel :

php artisan make:seeder PostSeeder

Dans PostSeeder.php :

use App\Models\Post;

public function run()
{
    Post::factory()->count(10000)->create();
}

Exécutez le seeder :

php artisan db:seed --class=PostSeeder

Maintenant votre base de données a suffisamment d'enregistrements pour tester des requêtes lourdes.


⚡ Étape 3 : Déclencher une Requête Lente (Pour les Tests)

Vous pouvez simuler une requête lente avec une route simple :

use Illuminate\Support\Facades\DB;

Route::get('/slow-query', function () {
    usleep(2000000); // 2 secondes de délai (en microsecondes)
    return DB::table('posts')->limit(1000)->get();
});

Ou si vous utilisez MySQL, essayez :

return DB::select('SELECT SLEEP(2), title FROM posts LIMIT 1');

Ceci créera un délai suffisant pour déclencher l'enregistrement.


📂 Étape 4 : Vérifier les Logs

Ouvrez ce fichier :

storage/logs/laravel.log

Et vous verrez quelque chose comme :

[2025-04-04 14:15:22] local.WARNING: ⚠️ Long running queries detected: [...]

Voilà ! Vous venez de capturer une requête lente.


🔐 Bonus : Enregistrer le SQL Complet avec les Bindings

Vous voulez voir les instructions SQL exactes ?

DB::listen(function ($query) {
    Log::info("SQL: {$query->sql} | Time: {$query->time}ms", $query->bindings);
});

Ajoutez ceci à votre AppServiceProvider@boot() pendant le développement.


🧩 Cas d'Utilisation Réels

  • Surveiller les endpoints d'API qui répondent trop lentement
  • Déboguer les tableaux de bord admin avec de grands jeux de données
  • Détecter les index manquants sur les tables fréquemment utilisées

✅ Récapitulatif

Laravel vous donne les outils — vous n'avez qu'à actionner l'interrupteur.

En enregistrant les requêtes de longue durée :

  • Vous obtenez une meilleure visibilité sur les performances de votre application
  • Vous prévenez les goulots d'étranglement précocement
  • Vous construisez des applications plus efficaces et évolutives

🔔 Prochaine étape : Essayez ceci sur votre projet actuel et gardez les logs actifs pendant le développement. Vous serez étonné de la rapidité avec laquelle vous repérez des schémas.

Coffee cup

Vous avez apprécié cet article ?

Votre soutien m'aide à créer davantage de contenu technique approfondi, d'outils open source et de ressources gratuites pour la communauté des développeurs.

Sujets connexes

Engr Mejba Ahmed

À propos de l'auteur

Engr Mejba Ahmed

Engr. Mejba Ahmed builds AI-powered applications and secure cloud systems for businesses worldwide. With 10+ years shipping production software in Laravel, Python, and AWS, he's helped companies automate workflows, reduce infrastructure costs, and scale without security headaches. He writes about practical AI integration, cloud architecture, and developer productivity.

Discussion

Comments

0

No comments yet

Be the first to share your thoughts

Leave a Comment

Your email won't be published

11  -  3  =  ?

Continuer l'apprentissage

Articles connexes

Tout parcourir

Comments

Leave a Comment

Comments are moderated before appearing.

Learning Resources

Expand Your Knowledge

Accelerate your growth with structured courses, verified certificates, interactive flashcards, and production-ready AI agent skills.

Sample Certificate of Completion

Sample certificate — complete any course to earn yours

Engr Mejba Ahmed

Engr Mejba Ahmed

Claude Code Expert · Online

👋

Hey there!

Quick Actions

WhatsApp Instant reply

Chat on WhatsApp

+880 1723 741224 · Instant reply

Popular Questions

Engr Mejba Ahmed is connected
Engr Mejba Ahmed is typing...
Engr Mejba Ahmed avatar

✉ Want me to follow up? Drop your email

Engr Mejba Ahmed avatar

📞 Connect Directly

Choose how you'd like to reach me

WhatsApp

+880 1723 741224

Email

[email protected]

✓ Details sent! I'll get back to you shortly.

Powered by OpenAI

335+

Blog Posts

25

AI Courses

63

Projects

Services & Expertise

Pricing & Process

Learning & Resources

Connect & Support