BTS SIO2D
  • Accueil
  • Connexion
27 novembre 2024 par Nathan Guche

L’automatisation avec Queues et Jobs

L’automatisation avec Queues et Jobs
27 novembre 2024 par Nathan Guche

Table des matières

Toggle
  • 🚀 Automatiser les tâches avec Laravel Queues et Jobs
    • 1️⃣ Comprendre Laravel Queues et Jobs
      • 🛠️ Que sont les Jobs et les Queues ?
    • 2️⃣ Configuration des Queues dans Laravel
      • 🔹 Modifier la configuration
    • 3️⃣ Création et gestion des Jobs
      • 📝 Créer un Job
    • 4️⃣ Dispatcher un Job dans la Queue
    • 5️⃣ Exécuter les Queues avec un Worker
    • 6️⃣ Utiliser les Queues avec Redis (Optionnel mais puissant)
      • 🛠️ Étape 1 : Installer Redis
      • 🛠️ Étape 2 : Lancer le Worker Redis
    • 7️⃣ Superviser et relancer les jobs échoués
      • 📌 Vérifier les jobs échoués
      • 📌 Relancer les jobs échoués
      • 📌 Supprimer les jobs échoués
    • 🔮 Conclusion : Laravel Queues, un outil puissant

🚀 Automatiser les tâches avec Laravel Queues et Jobs

Dans une application Laravel, certaines tâches peuvent être longues et gourmandes en ressources :
✅ Envoi d’e-mails 📧
✅ Génération de rapports 📊
✅ Traitement de fichiers 📂
✅ Notifications en arrière-plan 🔔

Pour éviter que ces opérations ne bloquent le chargement de tes pages, Laravel Queues permet d’exécuter ces tâches en arrière-plan. 🎯

Dans cet article, nous allons voir comment utiliser Laravel Queues et Jobs pour automatiser ces tâches efficacement.


1️⃣ Comprendre Laravel Queues et Jobs

🛠️ Que sont les Jobs et les Queues ?

🔹 Job : Un job (ou tâche) est une classe qui contient du code à exécuter en arrière-plan.
🔹 Queue : Une file d’attente (queue) stocke les jobs et les exécute plus tard, de manière asynchrone.

📌 Pourquoi utiliser les queues ?
✅ Améliore la rapidité de l’application.
✅ Évite les blocages sur les requêtes longues.
✅ Optimise les performances en répartissant la charge.


2️⃣ Configuration des Queues dans Laravel

Laravel propose plusieurs drivers de queue :

  • sync → Exécution immédiate (pas en arrière-plan).
  • database → Stocke les jobs dans la base de données.
  • redis → Haute performance (nécessite Redis).
  • sqs → Utilise Amazon SQS pour les tâches distribuées.

🔹 Modifier la configuration

Dans .env, configure le driver des queues :

envCopierModifierQUEUE_CONNECTION=database  # Ou redis, sqs...

Dans config/queue.php, assure-toi que la connexion correspond à celle choisie.


3️⃣ Création et gestion des Jobs

📝 Créer un Job

Exécute la commande suivante :

bashCopierModifierphp artisan make:job SendEmailJob

Cela génère un fichier dans app/Jobs/SendEmailJob.php.

📌 Exemple de Job qui envoie un e-mail :

phpCopierModifiernamespace App\Jobs;

use Mail;
use App\Mail\WelcomeEmail;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;

class SendEmailJob implements ShouldQueue
{
    use Queueable, SerializesModels, InteractsWithQueue;

    protected $user;

    public function __construct($user)
    {
        $this->user = $user;
    }

    public function handle()
    {
        Mail::to($this->user->email)->send(new WelcomeEmail($this->user));
    }
}

✅ Ce Job sera exécuté en arrière-plan sans ralentir l’application !


4️⃣ Dispatcher un Job dans la Queue

Après avoir créé le Job, il faut le dispatcher (l’envoyer en attente).

📌 Envoyer un Job dans la queue :

phpCopierModifieruse App\Jobs\SendEmailJob;
use App\Models\User;

$user = User::find(1);
dispatch(new SendEmailJob($user));

✅ Laravel va enregistrer le Job et l’exécuter plus tard !

📌 Envoyer un Job avec un délai :

phpCopierModifierdispatch(new SendEmailJob($user))->delay(now()->addMinutes(5));

✅ Cela attendra 5 minutes avant d’exécuter le Job !


5️⃣ Exécuter les Queues avec un Worker

📌 Lancer le Worker pour traiter les tâches en attente :

bashCopierModifierphp artisan queue:work

✅ Laravel va maintenant exécuter les tâches en file d’attente 🚀

📌 Lancer le Worker en mode daemon (recommandé pour la prod) :

bashCopierModifierphp artisan queue:work --daemon

✅ Cela permet de ne pas redémarrer le Worker à chaque tâche.


6️⃣ Utiliser les Queues avec Redis (Optionnel mais puissant)

Pourquoi Redis ?

  • 📌 Plus rapide que la base de données
  • 📌 Meilleure gestion des files d’attente
  • 📌 Idéal pour les applications à forte charge

🛠️ Étape 1 : Installer Redis

Si Redis n’est pas installé, utilise :

bashCopierModifiercomposer require predis/predis

Puis change .env :

envCopierModifierQUEUE_CONNECTION=redis

🛠️ Étape 2 : Lancer le Worker Redis

bashCopierModifierphp artisan queue:work redis

✅ Ton application peut maintenant gérer des milliers de jobs efficacement !


7️⃣ Superviser et relancer les jobs échoués

📌 Vérifier les jobs échoués

bashCopierModifierphp artisan queue:failed

📌 Relancer les jobs échoués

bashCopierModifierphp artisan queue:retry all

📌 Supprimer les jobs échoués

bashCopierModifierphp artisan queue:flush

🔮 Conclusion : Laravel Queues, un outil puissant

Laravel Queues et Jobs permettent d’automatiser les tâches longues en arrière-plan, ce qui améliore considérablement les performances d’une application. 🚀

👉 💨 Laravel Breeze pour les petits projets ? OUI
👉 🌀 Laravel Jetstream pour les projets avancés ? OUI
👉 🔄 Laravel Queues pour automatiser les tâches ? ABSOLUMENT ✅

Article précédentGestion des exceptions en JavaArticle suivant Token CSRF

Laisser un commentaire Annuler la réponse

Vous devez vous connecter pour publier un commentaire.

About The Blog

Nulla laoreet vestibulum turpis non finibus. Proin interdum a tortor sit amet mollis. Maecenas sollicitudin accumsan enim, ut aliquet risus.

Articles récents

projet flutter Forum28 avril 2025
Backup BDD Bash17 mars 2025
UE – TF1 se met à Unreal Engine ?17 mars 2025

Catégories

  • Article Angular Killian
  • Article Clément
  • Article Unreal Engine Hugo
  • Cybersécurité
  • IA
  • Non classé
  • Projet Flutter KHM
  • Projet Hugo
  • Stage Clément
  • Stage Hugo
  • Stage Killian P
  • TP Clément

Méta

  • Inscription
  • Connexion
  • Flux des publications
  • Flux des commentaires
  • Site de WordPress-FR

Étiquettes

Article Développer son projet professionnel Flutter Gérer son identité professionnelle Java Stage Symfony TP

Why Lander

Lander is a design prepared
especially for the free version
of Rife WordPress Theme.

You can use this for free.
Make your website today.
Get Started Now!

Contact

734 Blackwell Street
Anchorage, Alaska
info@domain.com
+33 (0) 101 0000
+33 (0) 102 0000
Mon. - Fri. 8AM - 6PM

Articles récents

projet flutter Forum28 avril 2025
Backup BDD Bash17 mars 2025
UE – TF1 se met à Unreal Engine ?17 mars 2025
Rife Wordpress Theme. Proudly Built By Apollo13