recherche
Maisoncadre phpLaravelQu'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
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'
            ]);
    }}

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');
    });

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

S'inscrire dans appprovidersEventServiceProvider.php

Quest-ce que la file dattente LaravelTestListener.php

php artisan make:event TestEvent
php artisan make:listener TestListener

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'
            ]);
    }
}

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());
    });

【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
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
Impact de Laravel: simplifier le développement WebImpact de Laravel: simplifier le développement WebApr 21, 2025 am 12:18 AM

Laravel se démarque en simplifiant le processus de développement Web et en offrant des fonctionnalités puissantes. Ses avantages incluent: 1) la syntaxe concise et le système ORM puissant, 2) un système de routage et d'authentification efficace, 3) un riche support de bibliothèque tiers, permettant aux développeurs de se concentrer sur la rédaction du code élégant et d'améliorer l'efficacité du développement.

Laravel: Frontend ou backend? Clarifier le rôle du cadreLaravel: Frontend ou backend? Clarifier le rôle du cadreApr 21, 2025 am 12:17 AM

LaravelispredoMinancelyAbackendFramework, conçuforserver-sidelogic, databasemanagement, andapidevelopment, witalitalsosupportsfronttenddevelopmentwithbladetemplates.

Laravel vs Python: Explorer les performances et l'évolutivitéLaravel vs Python: Explorer les performances et l'évolutivitéApr 21, 2025 am 12:16 AM

Laravel et Python ont leurs propres avantages et inconvénients en termes de performances et d'évolutivité. Laravel améliore les performances par le biais de systèmes de traitement et de file d'attente asynchrones, mais en raison des limitations de PHP, il peut y avoir des goulots d'étranglement en cas de concurrence élevée; Python fonctionne bien avec le cadre asynchrone et un puissant écosystème de bibliothèque, mais est affecté par Gil dans un environnement multi-thread.

Laravel vs Python (avec frameworks): une analyse comparativeLaravel vs Python (avec frameworks): une analyse comparativeApr 21, 2025 am 12:15 AM

Laravel convient aux projets que les équipes connaissent PHP et nécessitent des fonctionnalités riches, tandis que les cadres Python dépendent des exigences du projet. 1.Laravel fournit une syntaxe élégante et des caractéristiques riches, adaptées aux projets qui nécessitent un développement rapide et une flexibilité. 2. Django convient aux applications complexes en raison de son concept "inclusion de batterie". 3.Laflasque convient aux prototypes rapides et aux petits projets, offrant une grande flexibilité.

Frontend avec Laravel: Explorer les possibilitésFrontend avec Laravel: Explorer les possibilitésApr 20, 2025 am 12:19 AM

Laravel peut être utilisé pour le développement frontal. 1) Utilisez le moteur du modèle de lame pour générer du HTML. 2) Intégrez Vite pour gérer les ressources frontales. 3) Construisez SPA, PWA ou site Web statique. 4) Combinez le routage, le middleware et l'éloquente pour créer une application Web complète.

PHP et Laravel: création d'applications côté serveurPHP et Laravel: création d'applications côté serveurApr 20, 2025 am 12:17 AM

PHP et Laravel peuvent être utilisés pour créer des applications efficaces côté serveur. 1.Php est un langage de script open source adapté au développement Web. 2.Laravel fournit le routage, le contrôleur, l'éloquente, le moteur de modèle de lame et d'autres fonctions pour simplifier le développement. 3. Améliorer les performances et la sécurité de l'application par la mise en cache, l'optimisation du code et les mesures de sécurité. 4. Test et stratégies de déploiement pour assurer un fonctionnement stable des applications.

Laravel vs Python: les courbes d'apprentissage et la facilité d'utilisationLaravel vs Python: les courbes d'apprentissage et la facilité d'utilisationApr 20, 2025 am 12:17 AM

Laravel et Python ont leurs propres avantages et inconvénients en termes de courbe d'apprentissage et de facilité d'utilisation. Laravel convient au développement rapide d'applications Web. La courbe d'apprentissage est relativement plate, mais il faut du temps pour maîtriser les fonctions avancées. La grammaire de Python est concise et la courbe d'apprentissage est plate, mais les systèmes de type dynamique doivent être prudents.

Les forces de Laravel: développement backendLes forces de Laravel: développement backendApr 20, 2025 am 12:16 AM

Les avantages de Laravel dans le développement back-end comprennent: 1) la syntaxe élégante et l'éloquente simplifient le processus de développement; 2) Écosystème riche et soutien communautaire actif; 3) Amélioration de l'efficacité de développement et de la qualité du code. La conception de Laravel permet aux développeurs de se développer plus efficacement et d'améliorer la qualité du code grâce à ses fonctionnalités et outils puissants.

See all articles

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

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

Adaptateur de serveur SAP NetWeaver pour Eclipse

Adaptateur de serveur SAP NetWeaver pour Eclipse

Intégrez Eclipse au serveur d'applications SAP NetWeaver.

MantisBT

MantisBT

Mantis est un outil Web de suivi des défauts facile à déployer, conçu pour faciliter le suivi des défauts des produits. Cela nécessite PHP, MySQL et un serveur Web. Découvrez nos services de démonstration et d'hébergement.

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

PhpStorm version Mac

PhpStorm version Mac

Le dernier (2018.2.1) outil de développement intégré PHP professionnel