Maison  >  Article  >  cadre php  >  Comment configurer et utiliser les files d'attente dans Laravel

Comment configurer et utiliser les files d'attente dans Laravel

PHPz
PHPzoriginal
2023-04-03 18:52:181944parcourir

Laravel est un framework PHP open source populaire qui fournit une série d'outils et de fonctionnalités puissants pour aider les développeurs à créer rapidement des applications Web de haute qualité.

La file d'attente est une fonctionnalité très importante et couramment utilisée dans le framework Laravel. Il vous permet de mettre en file d'attente certaines tâches fastidieuses, puis de les exécuter de manière asynchrone, ce qui peut améliorer les performances et la fiabilité de votre application Web. Dans cet article, nous explorerons comment utiliser les files d'attente dans le framework Laravel.

1. Configurer la file d'attente Laravel

Avant de commencer à utiliser la file d'attente, vous devez d'abord configurer la file d'attente Laravel. Dans Laravel 5.1 et supérieur, vous pouvez utiliser la commande artisan pour générer un fichier de configuration de file d'attente :

php artisan queue:table

php artisan migrate

Le code ci-dessus générera une table de données de tâches, qui est utilisée pour stocker des informations sur les tâches de file d'attente. De plus, Laravel vous permet d'utiliser une variété de pilotes de file d'attente, notamment des bases de données, Redis, Amazon SQS, etc. Vous pouvez utiliser le fichier de configuration pour configurer le pilote de file d'attente requis, par exemple :

'default' => env('QUEUE_DRIVER', 'mysql'),

'connections' => [
        
        'mysql' => [
            'driver' => 'mysql',
            'host'   => env('DB_HOST', 'localhost'),
            'queue' => 'default',
            'table' => 'jobs',
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'database' => env('DB_DATABASE', 'forge'),
            'prefix' => '',
        ],

        'redis' => [
            'driver' => 'redis',
            'connection' => 'default',
            'queue' => 'default',
            'expire' => 60,
        ],

        'sqs' => [
            'driver' => 'sqs',
            'key' => env('AWS_ACCESS_KEY_ID'),
            'secret' => env('AWS_SECRET_ACCESS_KEY'),
            'prefix' => env('AWS_SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'),
            'queue' => env('AWS_SQS_QUEUE', 'default'),
            'region' => env('AWS_REGION', 'us-east-1'),
        ],
],

2. Créer des tâches de file d'attente

Après avoir configuré la file d'attente Laravel, vous pouvez commencer à créer des tâches de file d'attente. Dans Laravel, chaque tâche de file d'attente doit être une classe sérialisable, qui peut être définie en implémentant l'interface IlluminateContractsQueueShouldQueue. Par exemple :

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;

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

    protected $user;
    protected $content;

    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct(User $user, $content)
    {
        $this->user = $user;
        $this->content = $content;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        // 发送邮件给用户
        Mail::to($this->user)->send(new WelcomeMail($this->content));
    }
}

Dans le code ci-dessus, nous définissons une classe de tâches de file d'attente nommée SendEmail, qui accepte un utilisateur et une chaîne de contenu d'e-mail dans le constructeur. Cette classe implémente l'interface ShouldQueue, donc Laravel sait que la tâche doit être ajoutée à la file d'attente plutôt que exécutée directement dans la requête en cours.

3. Pousser la tâche de file d'attente

Après avoir créé une tâche de file d'attente, l'étape suivante consiste à pousser la tâche vers la file d'attente. Dans Laravel, vous pouvez le faire en utilisant la façade Queue. Par exemple :

use Illuminate\Support\Facades\Queue;

$user = User::find(1);
$content = '欢迎加入我们的网站!';

Queue::push(new SendEmail($user, $content));

Dans le code ci-dessus, nous utilisons la façade Queue pour pousser une tâche SendEmail vers la file d'attente. Lorsque la tâche est traitée, un email de bienvenue est envoyé à l'utilisateur.

4. Exécuter les tâches de file d'attente

Maintenant que nous avons poussé une tâche dans la file d'attente, la question suivante est de savoir comment exécuter la tâche. Dans Laravel, l'exécution des tâches de file d'attente est très simple. Il vous suffit d'exécuter la commande artisanale suivante :

php artisan queue:work

Cette commande démarrera un écouteur qui écoutera les tâches de la file d'attente et les exécutera dans l'ordre. Une fois le traitement des tâches de file d'attente terminé, l'écouteur s'arrêtera automatiquement.

En plus de démarrer l'écouteur de cette manière, Laravel fournit également un autre moyen d'effectuer des tâches de file d'attente, qui consiste à utiliser le serveur de messages de la file d'attente. Par exemple, lorsque vous utilisez le pilote de file d'attente Redis, vous pouvez utiliser la commande suivante pour démarrer le serveur de messages de file d'attente :

php artisan queue:listen redis

Cette commande démarrera un écouteur de file d'attente qui écoutera la file d'attente Redis et exécutera les tâches de file d'attente dans l'ordre.

5. Surveiller les tâches de file d'attente

Enfin, Laravel fournit également un ensemble d'outils puissants pour surveiller l'exécution des tâches de file d'attente. Vous pouvez utiliser la commande suivante pour afficher les tâches dans la file d'attente actuelle :

php artisan queue:work --status

Cette commande affichera toutes les tâches de la file d'attente actuelle et fournira l'ID de la tâche, la file d'attente, l'état et d'autres informations.

De plus, Laravel fournit également un ensemble complet d'outils de surveillance et de gestion des files d'attente. Vous pouvez utiliser Laravel Horizon ou Laravel Telescope pour surveiller l'exécution des tâches de file d'attente. Ces outils peuvent fournir des résultats d'exécution de tâches en temps réel, des informations statistiques, une gestion complète des exceptions et d'autres fonctions.

Résumé

À ce stade, nous maîtrisons l'utilisation de base des files d'attente Laravel. L'utilisation de files d'attente peut améliorer considérablement les performances et la fiabilité de votre application Web, en particulier lorsque vous devez effectuer des tâches fastidieuses. Si vous développez une application Laravel et souhaitez optimiser ses performances, l'utilisation de files d'attente est un outil à ne pas manquer.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn