Maison  >  Article  >  cadre php  >  À propos des événements Laravel et du traitement asynchrone

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

藏色散人
藏色散人avant
2020-12-29 09:20:113137parcourir

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;


    }

Comment déclencher en entreprise ?

   public function test(){
       Test::dispatch('你好事件');
   }

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);
        //打印:你好事件
    }}

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',
    ],];
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;}
/**
 * 获取应该用于发现事件的监听器的目录
 *
 * @return array
 */
  protected function discoverEventsWithin()
    {
        return [
            $this->app->path('Lisenter'),//事件关联的监听器目录APP/Lisenters
            $this->app->path('Lisenter/test'),//事件关联的监听器目录APP/Lisenters/test
        ];
    }

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);
        //打印:你好事件
    }}

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer