Table of Contents
Configuration des Files d’Attente dans Laravel
=====================================================
Les files d’attente sont une caractéristique clé de Laravel qui permet aux développeurs de traiter les tâches en arrière-plan. Dans ce tutoriel, nous allons explorer la configuration et l’utilisation des files d’attente dans votre application Laravel.
Pourquoi Utiliser les Files d’Attente ?
Les files d’attente sont particulièrement utiles lorsque vous avez un processus qui nécessite beaucoup de travail pour être traité. Au lieu de le lancer directement, vous pouvez le mettre en file d’attente et laisser le worker de file d’attente le traiter individuellement. Cela permet également de répartir la charge sur plusieurs workers de file d’attente, ce qui peut être particulièrement utile pour les tâches lourdes.
Configuration des Files d’Attente
Les files d’attente ont leur propre fichier de configuration (config/queue.php) où vous pouvez définir différents drivers et spécifier le driver par défaut. Vous devez également y stocker vos informations d’authentification pour SQS, Redis ou beanstalkd.
Utilisation de Redis avec Laravel Forge
Laravel Forge est un service de gestion de serveur qui simplifie l’utilisation des files d’attente avec Redis. Chaque serveur que vous créez a déjà Redis configuré automatiquement. Vous pouvez alors simplement aller dans la console de votre site et cliquer sur “Start Worker” pour utiliser Redis comme driver de file d’attente.
Les Jobs
Les jobs sont les unités de travail qui sont ajoutées à la file d’attente. Ils peuvent prendre différentes formes, telles que des tableaux de données ou simplement des chaînes de caractères. Laravel fournit une structure appelée Job qui encapsule une tâche unique et permet son ajout et sa récupération à partir de la file d’attente.
Création d’un Job
Pour créer un job, vous pouvez utiliser l’artisan : php artisan make:job CrunchReports. Cela créera un nouveau fichier avec le template suivant :
namespace App\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
class CrunchReports implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
//
}
}
Fournir des Données au Job
Vous pouvez fournir des données au job en utilisant le constructeur. Par exemple :
protected $user;
public function __construct($user)
{
$this->user = $user;
}
public function handle(ReportGenerator $generator)
{
$generator->generateReportsForUser($this->user);
Log::info('Generated reports.');
}
Envoi d’un Job dans la File d’Attente
Il existe plusieurs façons de dispatcher un job, mais la méthode recommandée est de l’appeler directement sur le job lui-même. Par exemple :
$user = auth()->user();
$daysToCrunch = 7;
\App\Jobs\CrunchReports::dispatch($user, $daysToCrunch);
Vous pouvez également personnaliser la connexion, la file d’attente et le délai en utilisant les méthodes onConnection(), onQueue() et delay().
Délai
Le délai permet de spécifier le temps que les workers de file d’attente doivent attendre avant de traiter un job. Par exemple :
DoThingJob::dispatch()->delay(10);
Cela signifie que le job sera traité 10 secondes après l’être envoyé dans la file d’attente.
En conclusion, les files d’attente sont une caractéristique puissante de Laravel qui permet aux développeurs de traiter les tâches en arrière-plan. En suivant ce tutoriel, vous devriez maintenant être capable de configurer et d’utiliser les files d’attente dans votre application.
Prochaines Étapes
- Explorons la création de jobs plus complexes qui utilisent des dépendances injectées.
- Apprenons à utiliser les queues pour traiter les tâches asynchrones.
In-Article Ad
Dev Mode
Mahmoud DEVO
Senior Full-Stack Developer
I'm a passionate full-stack developer with 10+ years of experience building scalable web applications. I write about Vue.js, Node.js, PostgreSQL, and modern DevOps practices.
Enjoyed this article?
Subscribe to get more tech content delivered to your inbox.
Related Articles
Brodcastez avec Pusher et Redis : Comment tenir vos utilisat
Voilà ! Voici une métadescription de 150 à 160 caractères qui résume la valeur ajoutée principale et inclut un appel à l'action subtil : "Apprenez à diffuser d
Commentaires sur le développement d'API avec Laravel : les m
Voici une proposition de méta-description pour votre article : "Découvrez les meilleures pratiques pour créer des applications Laravel performantes avec nos co
Apprendre Laravel : De la base aux fonctionnalités avancées
Voici une proposition de meta description : "Découvrez comment créer des applications web robustes avec Laravel ! Apprenez à utiliser les templates, les vues e