91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

尤溪县| 洪洞县| 清水县| 海兴县| 留坝县| 皋兰县| 邹平县| 兰西县| 遵化市| 金华市| 崇义县| 两当县| 会同县| 乌拉特中旗| 永新县| 涪陵区| 永仁县| 焉耆| 湘乡市| 永平县| 固安县| 宁蒗| 晋中市| 宿迁市| 饶河县| 文安县| 乌拉特前旗| 天全县| 永顺县| 明光市| 临夏市| 大新县| 邮箱| 天门市| 安图县| 金塔县| 电白县| 博野县| 寿宁县| 桑日县| 孟村|