ホームページ  >  記事  >  PHPフレームワーク  >  Laravelイベントと非同期処理について

Laravelイベントと非同期処理について

藏色散人
藏色散人転載
2020-12-29 09:20:113137ブラウズ

以下は、## laravel #フレームワークチュートリアルコラムからのLaravelイベントと非同期処理の紹介です。困っている友人に役立つことを願っています。

Laravelイベントと非同期処理について

イベントの生成

php aritsan make:event Test

イベントとモニタリングlisten は 1 対多の管理です。1 つのイベントが複数の応答イベントに対応します。

$data 属性を定義し、イベントがトリガーされたときに渡されるデータを割り当てます。

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


    }

ビジネスでトリガーするにはどうすればよいですか?

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

リスナーの追加

php 職人 make:listener TestLisenter

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

「受け入れ方法」こんにちはイベント?"

現時点では、ビジネス ロジックを処理するリッスン オブジェクトを作成する必要があります

laravel は 2 つのソリューションを提供します:

オプション 1 :

$listen 配列情報を EventServiceProvider に追加します。例:

/**
 * 应用程序的事件监听器映射
 *
 * @var array
 */protected $listen = [
    'App\Events\Test' => [
        'App\Listeners\TestListenter',
    ],];
オプション 2:

システムに自動的に処理させ、 traverse 指定されたディレクトリ
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
        ];
    }

システムは自動的に Listen

と一致します この時点で、イベント プロセスは完了しています。成功しない場合、または遅延キュー、イベントに参加するかどうかの判断、失敗後の処理などのイベント処理について詳しく知りたい場合は、ドキュメント

# を参照してください。イベントキューの処理

Laravel のキューに詳しくない場合は、Laravel Jobs を参照してください。

TestListener に ShouldQueue インターフェースを実装するだけです。

こんな感じです。 :

rree

以上がLaravelイベントと非同期処理についての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はlearnku.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。