成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

laravel 隊(duì)列實(shí)例(一)

baoxl / 742人閱讀

摘要:導(dǎo)語(yǔ)之前在寫(xiě)事件監(jiān)聽(tīng)器的實(shí)例,數(shù)據(jù)都是直接入庫(kù)的,實(shí)際這一步可以放到隊(duì)列中去執(zhí)行。隊(duì)列有多種驅(qū)動(dòng)可以選擇,這里就使用。創(chuàng)建隊(duì)列使用即可創(chuàng)建隊(duì)列文件,最終生成文件功能只是數(shù)據(jù)入庫(kù),代碼很簡(jiǎn)單。

導(dǎo)語(yǔ)

之前在寫(xiě)事件/監(jiān)聽(tīng)器的實(shí)例,數(shù)據(jù)都是直接入庫(kù)的,實(shí)際這一步可以放到隊(duì)列中去執(zhí)行。laravel 隊(duì)列有多種驅(qū)動(dòng)可以選擇,這里就使用 redis。

創(chuàng)建隊(duì)列

使用 php artisan make:job BrowseLogQueue 即可創(chuàng)建隊(duì)列文件,最終生成 Jobs/BrowseLogQueue.php 文件

功能只是數(shù)據(jù)入庫(kù),代碼很簡(jiǎn)單。需要注意的是,可以在類(lèi)中指定最大失敗次數(shù)等配置,代碼如下

ip_addr = $ip_addr;
        $this->request_url = $request_url;
        $this->city_name = $city_name;
        $this->created_at = $now;
        $this->updated_at = $now;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle(BrowseLog $browseLog)
    {
        $log = new $browseLog;

        $log->ip_addr = $this->ip_addr;
        $log->request_url = $this->request_url;
        $log->city_name = $this->city_name;
        $log->created_at = $this->created_at;
        $log->updated_at = $this->updated_at;

        $log->save();
    }

    /**
     * 任務(wù)失敗
     * @param Exception $exception
     */
    public function failed(Exception $exception)
    {
        // 發(fā)送郵件,通知管理員
        event(new NotifyAdmin($exception->getMessage()));
    }
}
    
分發(fā)任務(wù)

將監(jiān)聽(tīng)器 CreateBrowseLog.php 文件修改如下

/**
     * Handle the event.
     *
     * @param  UserBrowse $event
     * @return void
     */
    public function handle(UserBrowse $event)
    {
        // 本地訪問(wèn)不做記錄
        $arr = ["127.0.0.1"];

        if (!in_array($event->ip_addr, $arr)) {
            /*$log = new AppModelsBrowseLog();

            $log->ip_addr = $event->ip_addr;
            $log->request_url = $event->request_url;
            $log->city_name = $event->city_name;

            $log->save();*/
            BrowseLogQueue::dispatch($event->ip_addr, $event->request_url, $event->city_name, now());

            /*BrowseLogQueue::dispatch($event->ip_addr, $event->request_url, $event->city_name)->delay(now()->addMinute(1)); 延時(shí)添加
            */
        }
    }
運(yùn)行隊(duì)列

最后一步就是運(yùn)行隊(duì)列,執(zhí)行 php artisan queue:work

運(yùn)行沒(méi)有問(wèn)題,但是到此并沒(méi)有結(jié)束,還需要使用 Supervisor 進(jìn)程守護(hù),下篇文章繼續(xù)。


參考資料:隊(duì)列。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/31223.html

相關(guān)文章

  • 剖析Laravel隊(duì)列系統(tǒng)--Worker

    摘要:一旦這一切完成,方法會(huì)運(yùn)行在類(lèi)屬性在命令構(gòu)造后設(shè)置容器解析實(shí)例,在中我們?cè)O(shè)置了將使用的緩存驅(qū)動(dòng),我們也根據(jù)命令來(lái)決定我們調(diào)用什么方法。作業(yè)只在以上起效在上也無(wú)效處理作業(yè)方法調(diào)用觸發(fā)事件觸發(fā)事件。 譯文GitHub https://github.com/yuansir/diving-laravel-zh 原文鏈接https://divinglaravel.com/queue-system...

    CollinPeng 評(píng)論0 收藏0
  • 剖析Laravel隊(duì)列系統(tǒng)--準(zhǔn)備隊(duì)列作業(yè)

    摘要:原文鏈接我們推送到隊(duì)列的每個(gè)作業(yè)都存儲(chǔ)在按執(zhí)行順序排序的某些存儲(chǔ)空間中,該存儲(chǔ)位置可以是數(shù)據(jù)庫(kù),存儲(chǔ)或像這樣的第三方服務(wù)。這個(gè)數(shù)字從開(kāi)始,在每次運(yùn)行作業(yè)時(shí)不斷增加。 原文鏈接https://divinglaravel.com/queue-system/preparing-jobs-for-queue Every job we push to queue is stored in som...

    marek 評(píng)論0 收藏0
  • laravel 隊(duì)列

    摘要:如果任務(wù)沒(méi)有在規(guī)定時(shí)間內(nèi)完成,那么該有序集合的任務(wù)將會(huì)被重新放入隊(duì)列中。這兩個(gè)進(jìn)程操縱了三個(gè)隊(duì)列,其中一個(gè),負(fù)責(zé)即時(shí)任務(wù),兩個(gè),負(fù)責(zé)延時(shí)任務(wù)與待處理任務(wù)。如果任務(wù)執(zhí)行成功,就會(huì)刪除中的任務(wù),否則會(huì)被重新放入隊(duì)列中。 在實(shí)際的項(xiàng)目開(kāi)發(fā)中,我們經(jīng)常會(huì)遇到需要輕量級(jí)隊(duì)列的情形,例如發(fā)短信、發(fā)郵件等,這些任務(wù)不足以使用 kafka、RabbitMQ 等重量級(jí)的消息隊(duì)列,但是又的確需要異步、重試...

    BDEEFE 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<