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

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

藏色散人
リリース: 2020-12-29 09:20:11
転載
3247 人が閲覧しました

以下は、## 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 までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート