亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

洛扎县| 揭阳市| 琼海市| 金秀| 甘孜| 龙门县| 仲巴县| 通州市| 深泽县| 泰宁县| 青海省| 利川市| 徐州市| 开鲁县| 临澧县| 泾源县| 靖江市| 隆安县| 雅江县| 寻甸| 景宁| 乌兰县| 岐山县| 宕昌县| 榆中县| 鹤岗市| 界首市| 盘锦市| 阿拉尔市| 高雄县| 大埔县| 洪江市| 安徽省| 宁河县| 四会市| 鄂尔多斯市| 杂多县| 双鸭山市| 宁晋县| 济源市| 庆城县|