中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Laravel事件之異步處理的示例

發布時間:2020-12-29 14:27:32 來源:億速云 閱讀:769 作者:小新 欄目:編程語言

小編給大家分享一下Laravel事件之異步處理的示例,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

生成事件

php aritsan make:event Test

事件和監聽 listen 是一對多的管理,一個事件對應多個響應事件

定一個$data 屬性,賦值觸發事件時傳遞的數據。

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


    }

如何在業務中觸發?

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

添加監聽者

php artisan make:listener TestLisenter

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

如何接受  “你好事件?”

這個時候我們要創建, listen 對象來處理業務邏輯

laravel 有提供兩種方案:

方案一:

EventServiceProvider 添加$listen 數組信息比如:

/**
 * 應用程序的事件監聽器映射
 *
 * @var array
 */protected $listen = [
    'App\Events\Test' => [
        'App\Listeners\TestListenter',
    ],];
方案二:

讓系統自動處理,遍歷指定目錄
需要在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

只需要在 TestLisenter 實現 ShouldQueue 的接口即可

長這樣:

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

看完了這篇文章,相信你對“Laravel事件之異步處理的示例”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

油尖旺区| 昌都县| 兴宁市| 萍乡市| 公安县| 溧水县| 张北县| 泾川县| 星子县| 横山县| 新干县| 琼结县| 阜宁县| 原阳县| 体育| 句容市| 巴中市| 奈曼旗| 长沙市| 鄂托克前旗| 枣强县| 乐陵市| 秭归县| 迭部县| 保亭| 秦安县| 武山县| 普安县| 梓潼县| 漳浦县| 江山市| 洛川县| 龙里县| 吴江市| 玉树县| 宜章县| 乌恰县| 峡江县| 紫金县| 五家渠市| 常德市|