Maison > cadre php > Laravel > le corps du texte

À propos des événements Laravel et du traitement asynchrone

藏色散人
Libérer: 2020-12-29 09:20:11
avant
3206 Les gens l'ont consulté

Ce qui suit est une introduction aux événements Laravel et au traitement asynchrone de la colonne du didacticiel du framework Laravel. soyez utile à vos amis dans le besoin !

À propos des événements Laravel et du traitement asynchrone

Générer des événements

php aritsan make:event Test

Événements et surveillance Listen est une gestion un-à-plusieurs. Un événement correspond à plusieurs événements de réponse

définit un attribut $data et attribue les données transmises lorsque l'événement est déclenché.

   public $data;
    /**
     * Create a new event instance.
     *
     * @return void
     */
    public function __construct($data)
    {
        $this->data = $data;


    }
Copier après la connexion

Comment déclencher en entreprise ?

   public function test(){
       Test::dispatch('你好事件');
   }
Copier après la connexion

Ajouter un écouteur

php artisan make:listener TestLisenter

namespace App\Lisenter;use App\Events\Test;class TestLisenter {
    public function handle(Test $test)
    {
        var_dump($test->data);
        //打印:你好事件
    }}
Copier après la connexion

Comment accepter " Bonjour événement ? "

À ce stade, nous devons créer un objet d'écoute pour gérer la logique métier

Laravel propose deux options :

Option 1 :

Ajoutez des informations sur le tableau $listen dans EventServiceProvider, par exemple :

/**
 * 应用程序的事件监听器映射
 *
 * @var array
 */protected $listen = [
    'App\Events\Test' => [
        'App\Listeners\TestListenter',
    ],];
Copier après la connexion
Option 2 :

Laissez le système le traiter automatiquement et parcourir le répertoire spécifié
Besoin d'ajouter EventServiceProvider :

/**
 * 确定是否应自动发现事件和侦听器
 *
 * @return bool
 */public function shouldDiscoverEvents(){
    return true;}
Copier après la connexion
/**
 * 获取应该用于发现事件的监听器的目录
 *
 * @return array
 */
  protected function discoverEventsWithin()
    {
        return [
            $this->app->path('Lisenter'),//事件关联的监听器目录APP/Lisenters
            $this->app->path('Lisenter/test'),//事件关联的监听器目录APP/Lisenters/test
        ];
    }
Copier après la connexion

Le système correspondra automatiquement à Listen

À ce moment, le processus événementiel est terminé. Si cela n'aboutit pas ou si vous souhaitez en savoir plus sur le traitement des événements, comme le délai de file d'attente, juger de l'opportunité de rejoindre l'événement, le traitement après un échec, etc. : reportez-vous au document

Traitement des files d'attente d'événements

Si vous n'avez aucun contact avec les files d'attente Laravel, veuillez vous référer à : Laravel Jobs

Il vous suffit d'implémenter l'interface ShouldQueue dans TestListenter

Cela ressemble à ceci :

namespace App\Lisenter;use App\Events\Test;use Illuminate\Contracts\Queue\ShouldQueue;class TestLisenter implements ShouldQueue{
    public function handle(Test $test)
    {
        var_dump($test->data);
        //打印:你好事件
    }}
Copier après la connexion

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!

Étiquettes associées:
source:learnku.com
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal