Table des matières
L'utilisation des files d'attente dans Laravel
Maison cadre php Laravel Qu'est-ce que la file d'attente Laravel

Qu'est-ce que la file d'attente Laravel

Feb 14, 2022 pm 03:25 PM
laravel 队列

Dans Laravel, une file d'attente est une table linéaire avec des opérations restreintes. Elle autorise uniquement les opérations de suppression à l'avant de la table (tête de file d'attente) et les opérations d'insertion à l'arrière de la table (queue de file d'attente) ; , développement L'utilisateur peut reporter le traitement des tâches chronophages à une date ultérieure, ce qui peut grandement améliorer la vitesse de réponse des requêtes Web.

Qu'est-ce que la file d'attente Laravel

L'environnement d'exploitation de ce tutoriel : système Windows 7, version Laravel 6, ordinateur Dell G3.

L'utilisation des files d'attente dans Laravel

1. Qu'est-ce qu'une file d'attente

Une table linéaire avec des opérations restreintes est qu'elle autorise uniquement les opérations de suppression au début de. la table et les opérations d'insertion sont effectuées sur le backend de la table. L'extrémité qui effectue l'opération d'insertion est appelée la queue de la file d'attente, et l'extrémité qui effectue l'opération de suppression est appelée la tête de la file d'attente.

Avec les files d'attente, vous pouvez reporter le traitement des tâches chronophages (comme l'envoi d'e-mails) à plus tard. Retarder ces tâches chronophages peut améliorer considérablement la vitesse de réponse aux requêtes Web.

2. Avantages

  • Découplage : la file d'attente des messages peut découpler le système, améliorer la vitesse de réponse, et les fonctions du système sont regroupées vers l'intérieur et ouvertes vers l'extérieur ; peut être asynchrone par rapport au système Les fonctions sont supprimées pour réduire le couplage fonctionnel et améliorer l'efficacité du développement ; Configuration

  • fichier de configuration de la file d'attente Stocké dans config/queue.php. Dans ce fichier, vous pouvez trouver la configuration de connexion pour chaque pilote de file d'attente inclus dans le framework, qui comprend la base de données, Beanstalkd, Amazon SQS, Redis et un pilote de synchronisation (sync - pour une utilisation locale).

    Redis est utilisé comme pilote ici, et Redis et les extensions associées doivent être installées.
  • 4. Tâche

Nous devons mettre quelque chose dans la file d'attente, nous pouvons appeler cela une tâche. La création de tâches dans le framework Laravel nous fournit les commandes suivantes :

php artisan make:job TestJob
Copier après la connexion
TestJob.php

namespace App\Jobs;use Illuminate\Bus\Queueable;use Illuminate\Contracts\Queue\ShouldBeUnique;use Illuminate\Contracts\Queue\ShouldQueue;use Illuminate\Foundation\Bus\Dispatchable;use Illuminate\Queue\InteractsWithQueue;use Illuminate\Queue\SerializesModels;use Illuminate\Support\Facades\DB;use Symfony\Polyfill\Intl\Idn\Info;class TestJob 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()
    {//        \Log::info('hhh');
        DB::connection('test')
            ->table('master')
            ->insert([
                'name'=>'小白',
                'email'=>'123@qq.com'
            ]);
    }}
Copier après la connexion

5. DistributionUne fois la classe de tâches écrite, vous pouvez utiliser la méthode de répartition de la tâche elle-même. pour l'expédier. Les paramètres passés à la méthode de répartition seront transmis au constructeur de la tâche. :Onqueue : Spécifier la file d'attente ;

OnConnection : Spécifier la connexion ;

Dlay : file d'attente différée ;

DispatchNow : Planification synchrone 

Exécuter deux fois. dispose d'un processeur de file d'attente pour traiter les tâches nouvellement placées dans la file d'attente. Démarrez le processeur de file d'attente avec la commande Artisan queue:work. Il est à noter qu'une fois la commande queue:work lancée, elle continuera à s'exécuter jusqu'à ce qu'elle soit arrêtée manuellement ou que vous fermiez votre terminal :

php artisan queue:workphp artisan queue:work --once Ajouter des paramètres, consommer Spécifiez la file d'attente

#在路由中简单调用
Route::get('queue',function(){
        \App\Jobs\TestJob::dispatch();
//        \App\Jobs\TestJob::dispatch()->onQueue('qq');
    });
Copier après la connexion

Vous pouvez voir que deux nouvelles données ont été ajoutées à la base de données et que les données dans Redis ont été consommées




Nous exécutons à nouveau le routage

Quest-ce que la file dattente Laravel

7. File d'attente des événements

La file d'attente est généralement utilisée pour gérer les tâches retardées et les événements sont traités par la logique métier. Les déclencheurs d'événements dans Laravel sont distribués dans des files d'attente pour un traitement métier asynchrone, afin que vous puissiez répondre rapidement sans avoir à attendre les résultats de l'exécution en temps réel avant d'envoyer des messages d'invite aux utilisateurs.

Si nous devons stocker l'entreprise de l'événement dans la file d'attente, nous n'avons pas besoin de redistribuer la file d'attente. Nous pouvons directement implémenter l'interface IlluminateContractsQueueShouldQueue dans l'écouteur correspondant.

Créer des événements et des auditeurs

#消费qq队列
php artisan queue:work --queue=qq
Copier après la connexion

S'inscrire dans appprovidersEventServiceProvider.php

Quest-ce que la file dattente LaravelTestListener.php

php artisan make:event TestEvent
php artisan make:listener TestListener
Copier après la connexion

Modifier la routeQuest-ce que la file dattente Laravel

namespace App\Listeners;

use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Support\Facades\DB;

class TestListener implements ShouldQueue
{
    /**
     * Create the event listener.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    /**
     * Handle the event.
     *
     * @param  object  $event
     * @return void
     */
    public function handle()
    {
        DB::connection('test')
            ->table('master')
            ->insert([
                'name'=>'小黑',
                'email'=>'234@qq.com'
            ]);
    }
}
Copier après la connexion

Exécuter la route

Quest-ce que la file dattente Laravel

File d'attente de consommation

Route::get('queue',function(){
        //\App\Jobs\TestJob::dispatch();
        //指定队列名称
        //\App\Jobs\TestJob::dispatch()->onQueue('qq');
        return event(new \App\Events\TestEvent());
    });
Copier après la connexion

【Recommandations associées : tutoriel vidéo laravel

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 de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment obtenir le code de retour lorsque l'envoi par e-mail échoue à Laravel? Comment obtenir le code de retour lorsque l'envoi par e-mail échoue à Laravel? Apr 01, 2025 pm 02:45 PM

Méthode pour obtenir le code de retour lorsque l'envoi par e-mail de Laravel échoue. Lorsque vous utilisez Laravel pour développer des applications, vous rencontrez souvent des situations où vous devez envoyer des codes de vérification. Et en réalité ...

Laravel Eloquent Orm dans Bangla Partial Model Search) Laravel Eloquent Orm dans Bangla Partial Model Search) Apr 08, 2025 pm 02:06 PM

Laravelelognent Model Retrieval: Faconttement l'obtention de données de base de données Eloquentorm fournit un moyen concis et facile à comprendre pour faire fonctionner la base de données. Cet article présentera en détail diverses techniques de recherche de modèles éloquentes pour vous aider à obtenir efficacement les données de la base de données. 1. Obtenez tous les enregistrements. Utilisez la méthode All () pour obtenir tous les enregistrements dans la table de base de données: usApp \ Modèles \ Post; $ poters = post :: all (); Cela rendra une collection. Vous pouvez accéder aux données à l'aide de Foreach Loop ou d'autres méthodes de collecte: ForEach ($ PostsAs $ POST) {echo $ post->

Exemple d'introduction de Laravel Exemple d'introduction de Laravel Apr 18, 2025 pm 12:45 PM

Laravel est un cadre PHP pour la création facile des applications Web. Il fournit une gamme de fonctionnalités puissantes, notamment: Installation: Installez le Laravel CLI globalement avec Composer et créez des applications dans le répertoire du projet. Routage: définissez la relation entre l'URL et le gestionnaire dans Routes / web.php. Voir: Créez une vue dans les ressources / vues pour rendre l'interface de l'application. Intégration de la base de données: fournit une intégration prête à l'emploi avec des bases de données telles que MySQL et utilise la migration pour créer et modifier des tables. Modèle et contrôleur: le modèle représente l'entité de la base de données et le contrôleur traite les demandes HTTP.

Géospatial de Laravel: optimisation des cartes interactives et de grandes quantités de données Géospatial de Laravel: optimisation des cartes interactives et de grandes quantités de données Apr 08, 2025 pm 12:24 PM

Traiter efficacement 7 millions d'enregistrements et créer des cartes interactives avec la technologie géospatiale. Cet article explore comment traiter efficacement plus de 7 millions d'enregistrements en utilisant Laravel et MySQL et les convertir en visualisations de cartes interactives. Exigences initiales du projet de défi: extraire des informations précieuses en utilisant 7 millions d'enregistrements dans la base de données MySQL. Beaucoup de gens considèrent d'abord les langages de programmation, mais ignorent la base de données elle-même: peut-il répondre aux besoins? La migration des données ou l'ajustement structurel est-il requis? MySQL peut-il résister à une charge de données aussi importante? Analyse préliminaire: les filtres et les propriétés clés doivent être identifiés. Après analyse, il a été constaté que seuls quelques attributs étaient liés à la solution. Nous avons vérifié la faisabilité du filtre et établi certaines restrictions pour optimiser la recherche. Recherche de cartes basée sur la ville

Fonction de connexion de l'utilisateur de Laravel Fonction de connexion de l'utilisateur de Laravel Apr 18, 2025 pm 12:48 PM

Laravel fournit un cadre Auth complet pour implémenter les fonctions de connexion des utilisateurs, notamment: définir des modèles d'utilisateurs (modèle éloquent), créant des formulaires de connexion (moteur de modèle de lame), rédaction des contrôleurs de connexion (héritage de l'authentification \ loginContrôleur), vérifiant les demandes de connexion (Auth :: tentative) Redirection après la connexion de la connexion, la limitation de la sécurité). De plus, le cadre Auth fournit également des fonctions telles que la réinitialisation des mots de passe, l'enregistrement et la vérification des e-mails. Pour plus de détails, veuillez consulter la documentation de Laravel: https://laravel.com/doc

Laravel et le backend: alimentation logique d'application Web Laravel et le backend: alimentation logique d'application Web Apr 11, 2025 am 11:29 AM

Comment Laravel joue-t-il un rôle dans la logique backend? Il simplifie et améliore le développement backend par le biais de systèmes de routage, d'éloquente, d'authentification et d'autorisation, d'événements et d'auditeurs et d'optimisation des performances. 1. Le système de routage permet la définition de la structure d'URL et demande la logique de traitement. 2.Lao-éloquente simplifie l'interaction de la base de données. 3. Le système d'authentification et d'autorisation est pratique pour la gestion des utilisateurs. 4. L'événement et l'écoute implémentent la structure de code couplée de manière lâche. 5. L'optimisation des performances améliore l'efficacité de l'application par la mise en cache et la file d'attente.

Résoudre les problèmes de mise en cache dans Craft CMS: Utilisation du plug-in Wiejeben / Craft-Laravel-MIX Résoudre les problèmes de mise en cache dans Craft CMS: Utilisation du plug-in Wiejeben / Craft-Laravel-MIX Apr 18, 2025 am 09:24 AM

Lorsque vous développez des sites Web à l'aide de CRAFTCMS, vous rencontrez souvent des problèmes de mise en cache de fichiers de ressources, en particulier lorsque vous mettez fréquemment à mettre à jour les fichiers CSS et JavaScript, les anciennes versions des fichiers peuvent toujours être mises en cache par le navigateur, ce qui fait que les utilisateurs ne voient pas les derniers changements de temps. Ce problème affecte non seulement l'expérience utilisateur, mais augmente également la difficulté du développement et du débogage. Récemment, j'ai rencontré des problèmes similaires dans mon projet, et après une exploration, j'ai trouvé le plugin wiejeben / artist-laravel-mix, qui a parfaitement résolu mon problème de mise en cache.

Méthode d'installation de Laravel Framework Méthode d'installation de Laravel Framework Apr 18, 2025 pm 12:54 PM

Résumé de l'article: Cet article fournit des instructions détaillées étape par étape pour guider les lecteurs sur la façon d'installer facilement le cadre Laravel. Laravel est un puissant cadre PHP qui accélère le processus de développement des applications Web. Ce didacticiel couvre le processus d'installation des exigences du système à la configuration des bases de données et à la configuration du routage. En suivant ces étapes, les lecteurs peuvent jeter rapidement et efficacement une base solide pour leur projet Laravel.

See all articles