Position actuelle: Accueil> Derniers articles> Guide de l'utilisateur de la fonction de file d'attente Laravel: configuration, définition des tâches et exécution

Guide de l'utilisateur de la fonction de file d'attente Laravel: configuration, définition des tâches et exécution

M66 2025-07-02

introduction

La file d'attente est un mécanisme de traitement asynchrone commun qui joue un rôle important dans le développement Web. Le framework Laravel offre de puissantes fonctions de file d'attente, qui peuvent facilement gérer diverses tâches d'arrière-plan, telles que l'envoi d'e-mails, la génération de rapports et le traitement des mégadonnées. Cet article présentera en détail comment utiliser les fonctions de file d'attente dans le cadre Laravel, y compris la configuration de la file d'attente, la définition et l'exécution des tâches, et donner des exemples de code correspondants.

Configurer les files d'attente

Dans le cadre Laravel, la configuration des files d'attente est très simple. Tout d'abord, ouvrez le fichier de configuration config / queue.php et définissez le lecteur de file d'attente et les paramètres de connexion correspondants. Laravel prend en charge une variété de disques de file d'attente, tels que la base de données, Redis, BeanStalkd, etc. L'exemple suivant est illustré en utilisant un lecteur de base de données comme exemple:

 <span class="fun">&#39;Connections&#39; => [&#39;Database&#39; => [&#39;Driver&#39; => &#39;Database&#39;, &#39;Table&#39; => &#39;Jobs&#39;, &#39;Queue&#39; => &#39;Default&#39;, &#39;Retry_after&#39; => 90,],],</span>

Dans la configuration ci-dessus, le pilote spécifie que le pilote de file d'attente est un pilote de base de données, le tableau spécifie le nom du tableau de données de la tâche de file d'attente, la file d'attente spécifie le nom de la file d'attente par défaut et le réglage RETRY_AFTER l'heure de retème après l'échec de l'exécution de la tâche.

Définir les tâches

Dans le cadre Laravel, les tâches de file d'attente (emplois) sont définies en classe et sont généralement stockées dans le répertoire APP / Jobs. Nous créons une tâche de file d'attente simple pour envoyer du courrier.

Tout d'abord, utilisez la commande artisan pour générer un modèle de tâche de file d'attente:

 <span class="fun">PHP Artisan Make: Job SendEmailJob</span>

Une fois la génération réussie, un fichier de classe nommé SendEmailJob sera généré dans le répertoire APP / Jobs. Ouvrez ce fichier, le code est le suivant:

 <span class="fun">APPJOBS d&#39;espace de noms; Utiliser illuminatebusqueuable; Utiliser illuminateContractsqueueshouldqueue; Utilisez illuminatefoundationBusDispatchable; Utilisez IlluminateQueueInteractWithQueue; Utiliser illuminatequeueSerializesmodells; Class SendEmailJob implémente Soutrqueue {Utiliser Dispatchable, InteractWithQueue, Diable, serializesModels; Fonction publique __Construct () {} Fonction publique Handle () {// Code logique pour envoyer des e-mails}}</span>

Dans cette classe, nous pouvons définir le code logique pour envoyer des e-mails. Il convient de noter que, comme les tâches de file d'attente sont exécutées de manière asynchrone, l'interface Souformeue doit être implémentée en classe. Dans le même temps, d'autres fonctionnalités (trait) réparables, interagissent, la carreaison et les sérializes, les modèles apportent une prise en charge des opérations de file d'attente et de la sérialisation des objets.

Jointure de tâche

Dans le cadre de Laravel, la mise en jeu des tâches est réalisée en appelant la fonction de répartition. Voici un exemple de code pour encourir la tâche SendEmailJob:

 <span class="fun">Utilisez AppJobSSendemailJob; Dispatch (new SendEmailJob ());</span>

Le code ci-dessus ajoute la tâche SendEmailJob à la file d'attente par défaut. Si vous souhaitez spécifier un nom de file d'attente, vous pouvez utiliser la méthode onqueue:

 <span class="fun">Utilisez AppJobSSendemailJob; Dispatch ((new SendEmailJob ()) -> onqueue (&#39;e-mail&#39;));</span>

Si vous souhaitez que la tâche soit retardée, vous pouvez utiliser la méthode de retard:

 <span class="fun">Utilisez AppJobSSendemailJob; $ job = (new SendEmailJob ()) -> Delay (Carbon :: Now () -> addMinutes (10)); répartition ($ job);</span>

Effectuer des tâches de file d'attente

Dans le cadre Laravel, les tâches de file d'attente peuvent être exécutées de deux manières: exécution synchrone et exécution asynchrone.

Exécution synchrone (pilote de synchronisation)

L'exécution synchrone fait référence à la tâche exécutée immédiatement dans la demande actuelle sans être traité par le pilote de file d'attente. Définissez simplement le lecteur de file d'attente par défaut dans le fichier de configuration config / queue.php sur "Sync":

 <span class="fun">&#39;Default&#39; => Env (&#39;Queue_Driver&#39;, &#39;Sync&#39;),</span>

À ce stade, la tâche sera exécutée immédiatement dans la demande actuelle.

Exécution asynchrone

L'exécution asynchrone fait référence à la tâche traitée et exécutée par le pilote de file d'attente. Dans config / queue.php, le lecteur de file d'attente par défaut peut être défini sur un autre lecteur, tel que "base de données".

 <span class="fun">&#39;Default&#39; => Env (&#39;Queue_Driver&#39;, &#39;Database&#39;),</span>

Ensuite, utilisez la commande suivante pour écouter et exécuter des tâches de file d'attente:

 <span class="fun">PHP Artisan Fitre: Travail</span>

À ce stade, la tâche sera ajoutée à la file d'attente et écoutée et exécutée par la Commande de file d'attente: Work.

Résumer

Grâce aux étapes ci-dessus, nous pouvons implémenter la fonction de file d'attente dans le cadre Laravel et fournir des exemples de code correspondants avec la tâche d'envoyer des e-mails à titre d'exemple. La fonction de file d'attente peut aider les développeurs à mieux gérer les tâches d'arrière-plan et à améliorer la concurrence et la vitesse de réponse du système. Dans le développement réel, d'autres fonctions et services tiers peuvent également être combinés pour atteindre des fonctions plus efficaces. J'espère que cet article vous sera utile lors de l'utilisation du framework Laravel.