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

資訊專欄INFORMATION COLUMN

Laravel5.4 隊(duì)列簡(jiǎn)單配置與使用

_DangJin / 486人閱讀

摘要:隊(duì)列的目的是將耗時(shí)的任務(wù)延時(shí)處理,比如發(fā)送郵件,從而大幅度縮短請(qǐng)求和相應(yīng)的時(shí)間。每一種隊(duì)列驅(qū)動(dòng)的配置都可以在該文件中找到,包括數(shù)據(jù)庫,,,,以及同步本地使用驅(qū)動(dòng)。處理完畢后當(dāng)前任務(wù)會(huì)自動(dòng)刪除?;揪拖旅孢@個(gè)樣到此隊(duì)列簡(jiǎn)單配置與使用就結(jié)束了。

概述 什么是隊(duì)列?

百度百科是這樣說的

“隊(duì)列”是在傳輸過程中保存數(shù)據(jù)的容器。

舉幾個(gè)生活中例子:

iphone手機(jī)新款發(fā)布,三里屯iphone進(jìn)的新貨。大家要排隊(duì)買,不能說一大堆人一起沖進(jìn)去,那么這店就完了。

你有一大堆女朋友。你不得一個(gè)一個(gè)來,一起來你也受不了 ?

C語言中堆的概念也是這樣,先進(jìn)先出,不能起個(gè)大早趕個(gè)晚集。

回到正題:

消息隊(duì)列則是為大批量處理數(shù)據(jù)而準(zhǔn)備的一個(gè)概念,他有很多實(shí)現(xiàn)方式,并不是單一的代碼結(jié)構(gòu)。

這里有比較專業(yè)的一篇文章:
http://www.cnblogs.com/xuyata...

還有適合新手揣摩的教程:
http://www.imooc.com/learn/852


廢話說完了,徹底進(jìn)入正題:

Laravel 為我們提供了一個(gè)簡(jiǎn)單并很容易配置的隊(duì)列類.

引用一點(diǎn)官方翻譯的話:

Laravel 隊(duì)列為不同的后臺(tái)隊(duì)列服務(wù)提供統(tǒng)一的 API , 例如 Beanstalk,Amazon SQS, Redis,甚至其他基于關(guān)系型數(shù)據(jù)庫的隊(duì)列。 隊(duì)列的目的是將耗時(shí)的任務(wù)延時(shí)處理,比如發(fā)送郵件,從而大幅度縮短Web請(qǐng)求和相應(yīng)的時(shí)間。

隊(duì)列配置文件存放在 config/queue.php。 每一種隊(duì)列驅(qū)動(dòng)的配置都可以在該文件中找到, 包括數(shù)據(jù)庫, Beanstalkd, Amazon SQS, Redis, 以及同步(本地使用)驅(qū)動(dòng)。 其中還包含了一個(gè)null隊(duì)列驅(qū)動(dòng)用于那些放棄隊(duì)列的任務(wù)。

Laravel 在 5.4版本中直接提供了全局函數(shù) dispatch(),你可以再任意地方調(diào)用。并且無需加載任何對(duì)象或者實(shí)例化類。 這個(gè)函數(shù)主要的用途就是將你的隊(duì)列需求加入到指定的容器中(專業(yè)點(diǎn)的叫生產(chǎn)者,其實(shí)你大可理解為你在商城購(gòu)物完排隊(duì)結(jié)賬的時(shí)候)

設(shè)置驅(qū)動(dòng)

Laravel神奇數(shù)據(jù)庫遷移我就不多說了。我相信你知道。

php artisan queue:table

php artisan migrate

執(zhí)行完上面兩條命令,費(fèi)力打開 configqueue.php, key=default 的數(shù)組中使用env配置文件加載方式,laravel安裝后默認(rèn)為sync(同步),我們需要改為異步(你現(xiàn)在可以暫時(shí)認(rèn)為同步!=隊(duì)列),這里我們選擇使用關(guān)系型數(shù)據(jù)庫來實(shí)現(xiàn)隊(duì)列

QUEUE_DRIVER=database
創(chuàng)建任務(wù)

創(chuàng)建任務(wù) = 搞一個(gè)生產(chǎn)者 = (其實(shí)就是寫一個(gè)在隊(duì)列中你想執(zhí)行的業(yè)務(wù)邏輯),名字隨意取,但最好遵守命名規(guī)范

php artisan make:job SendReminderEmail

這個(gè)生成的文件大概分2部分:__construct() 構(gòu)造方法 , handle 隊(duì)列執(zhí)行方法(意思就是在隊(duì)列執(zhí)行的時(shí)候,就用你這里面寫的代碼)

class SendReminderEmail implements ShouldQueue
{
    // 這塊你不用搭理他
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
    
    protected $name;

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

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        DB::table("email")->insert([
            "name" => $this->name,
            "img"=>1,
            "sort"=>1
        ]);
    }
}
生產(chǎn)者

隨后在控制器內(nèi)使用dispatch方法調(diào)用即可,下面我則for循環(huán)創(chuàng)建了100個(gè)業(yè)務(wù)

public function index(Request $request)
{
    for ($i = 0; $i <= 100; $i++) {
        dispatch(new SendReminderEmail("email" . $i));
    }
}

你通過數(shù)據(jù)遷移的數(shù)據(jù)表中就基本成這樣了

消費(fèi)者

消費(fèi)者 = 隊(duì)列處理 = (你在商城購(gòu)物已經(jīng)開始付錢了),使用下面命令則你開始消費(fèi),隊(duì)列也會(huì)按照你上面的業(yè)務(wù)邏輯開始處理。處理完畢后當(dāng)前任務(wù)會(huì)自動(dòng)刪除。

php artisan queue:work

基本就下面這個(gè)樣

到此Laravel5.4 隊(duì)列簡(jiǎn)單配置與使用就結(jié)束了。

更多專業(yè)吊炸天的教程請(qǐng)參考China Laravel
http://d.laravel-china.org/do...

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

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

相關(guān)文章

  • Laravel5.2隊(duì)列驅(qū)動(dòng)expire參數(shù)設(shè)置帶來的重復(fù)執(zhí)行問題 數(shù)據(jù)庫驅(qū)動(dòng)

    摘要:已經(jīng)取消了參數(shù),都用來執(zhí)行。取數(shù)據(jù)的過程事物處理已經(jīng)打開。取得符合條件的隊(duì)列后程序會(huì)更新該條數(shù)據(jù),并且更新完后即。 connections => [ .... database => [ driver => database, table => jobs, queue => defaul...

    ysl_unh 評(píng)論0 收藏0
  • Laravel5.4 Queues隊(duì)列學(xué)習(xí)

    摘要:提供了開箱即用的隊(duì)列服務(wù),隊(duì)列允許您延遲處理耗時(shí)的任務(wù),例如發(fā)送電子郵件,直到稍后的時(shí)間。推遲這些耗時(shí)的任務(wù)會(huì)大大加速您的應(yīng)用程序的請(qǐng)求。 Laravel提供了開箱即用的隊(duì)列服務(wù),隊(duì)列允許您延遲處理耗時(shí)的任務(wù),例如發(fā)送電子郵件,直到稍后的時(shí)間。推遲這些耗時(shí)的任務(wù)會(huì)大大加速您的應(yīng)用程序的Web請(qǐng)求。 一、生成隊(duì)列表 php artisan queue:table php artisan...

    MonoLog 評(píng)論0 收藏0
  • Any-基于Laravel5.4新的權(quán)限管理后臺(tái)骨架

    摘要:最簡(jiǎn)化權(quán)限管理系統(tǒng),基于開發(fā)?;陂_發(fā),唯一優(yōu)化的是用權(quán)限和路由別名綁定,這樣代碼寫好之后就可以直接使用。如果是超級(jí)管理員,即使沒有這個(gè)權(quán)限會(huì)自動(dòng)賦予權(quán)限給超級(jí)管理員角色。默認(rèn)管理員賬號(hào)密碼。然后正常執(zhí)行命令其他命令即可。 Any 最簡(jiǎn)化權(quán)限管理系統(tǒng),基于 Laravel5.4 開發(fā)。由于 Laravel5.5 發(fā)布推遲,只好先寫個(gè) Laravel5.4版本的,后面再升級(jí)上去。演示地址...

    Lavender 評(píng)論0 收藏0
  • laravel package收集

    摘要:查找保存下載用搭建自己的緩存?zhèn)}庫權(quán)限管理的好選擇基于封裝的后臺(tái)管理系統(tǒng),支持手機(jī)和端訪問支付寶風(fēng)格的驗(yàn)證器后臺(tái)系統(tǒng)微信接口的部署腳本開發(fā)的博客系統(tǒng)百度推送自動(dòng)記錄用戶行為擴(kuò)展一個(gè)項(xiàng)目管理系統(tǒng)根據(jù)生成對(duì)應(yīng)導(dǎo)航的狀態(tài) 1.debug https://github.com/barryvdh/l... showImg(https://segmentfault.com/img/bVmhWL); ...

    psychola 評(píng)論0 收藏0
  • Laravel5.4新特性-Laravel-mix和laravel-elixir比較

    摘要:之前的版本用的管理全段資源,版本開始使用的來管理。不過,并不是強(qiáng)制要求在開發(fā)期間使用它。發(fā)布問題標(biāo)題標(biāo)題編輯器容器內(nèi)容發(fā)布問題實(shí)例化編輯器設(shè)置如果沒有預(yù)加載,否則不會(huì)出現(xiàn) Laravel5.4 之前的版本用 gulp 的 laravel-elixir管理全段資源,Laravel5.4 版本開始使用webpack 的 Laravel Mix 來管理。 一、簡(jiǎn)介 Laravel Mix 提...

    187J3X1 評(píng)論0 收藏0

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

0條評(píng)論

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