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.
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 synchroneExé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
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=qqS'inscrire dans appprovidersEventServiceProvider.php
TestListener.php
php artisan make:event TestEvent php artisan make:listener TestListener
Modifier la route
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
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!

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.

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

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 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é.

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 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 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 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.


Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

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 !

Article chaud

Outils chauds

Dreamweaver CS6
Outils de développement Web visuel

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

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
Puissant environnement de développement intégré PHP

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