摘要:隊列的目的是將耗時的任務延時處理,比如發送郵件,從而大幅度縮短請求和相應的時間。每一種隊列驅動的配置都可以在該文件中找到,包括數據庫,,,,以及同步本地使用驅動。處理完畢后當前任務會自動刪除。基本就下面這個樣到此隊列簡單配置與使用就結束了。
概述 什么是隊列?
百度百科是這樣說的
“隊列”是在傳輸過程中保存數據的容器。
舉幾個生活中例子:
iphone手機新款發布,三里屯iphone進的新貨。大家要排隊買,不能說一大堆人一起沖進去,那么這店就完了。
你有一大堆女朋友。你不得一個一個來,一起來你也受不了 ?
C語言中堆的概念也是這樣,先進先出,不能起個大早趕個晚集。
回到正題:
消息隊列則是為大批量處理數據而準備的一個概念,他有很多實現方式,并不是單一的代碼結構。
這里有比較專業的一篇文章:
http://www.cnblogs.com/xuyata...
還有適合新手揣摩的教程:
http://www.imooc.com/learn/852
廢話說完了,徹底進入正題:
Laravel 為我們提供了一個簡單并很容易配置的隊列類.
引用一點官方翻譯的話:
Laravel 隊列為不同的后臺隊列服務提供統一的 API , 例如 Beanstalk,Amazon SQS, Redis,甚至其他基于關系型數據庫的隊列。 隊列的目的是將耗時的任務延時處理,比如發送郵件,從而大幅度縮短Web請求和相應的時間。隊列配置文件存放在 config/queue.php。 每一種隊列驅動的配置都可以在該文件中找到, 包括數據庫, Beanstalkd, Amazon SQS, Redis, 以及同步(本地使用)驅動。 其中還包含了一個null隊列驅動用于那些放棄隊列的任務。
Laravel 在 5.4版本中直接提供了全局函數 dispatch(),你可以再任意地方調用。并且無需加載任何對象或者實例化類。 這個函數主要的用途就是將你的隊列需求加入到指定的容器中(專業點的叫生產者,其實你大可理解為你在商城購物完排隊結賬的時候)
設置驅動Laravel神奇數據庫遷移我就不多說了。我相信你知道。
php artisan queue:table php artisan migrate
執行完上面兩條命令,費力打開 configqueue.php, key=default 的數組中使用env配置文件加載方式,laravel安裝后默認為sync(同步),我們需要改為異步(你現在可以暫時認為同步!=隊列),這里我們選擇使用關系型數據庫來實現隊列
QUEUE_DRIVER=database創建任務
創建任務 = 搞一個生產者 = (其實就是寫一個在隊列中你想執行的業務邏輯),名字隨意取,但最好遵守命名規范
php artisan make:job SendReminderEmail
這個生成的文件大概分2部分:__construct() 構造方法 , handle 隊列執行方法(意思就是在隊列執行的時候,就用你這里面寫的代碼)
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 ]); } }生產者
隨后在控制器內使用dispatch方法調用即可,下面我則for循環創建了100個業務
public function index(Request $request) { for ($i = 0; $i <= 100; $i++) { dispatch(new SendReminderEmail("email" . $i)); } }
你通過數據遷移的數據表中就基本成這樣了
消費者 = 隊列處理 = (你在商城購物已經開始付錢了),使用下面命令則你開始消費,隊列也會按照你上面的業務邏輯開始處理。處理完畢后當前任務會自動刪除。
php artisan queue:work
基本就下面這個樣
到此Laravel5.4 隊列簡單配置與使用就結束了。
更多專業吊炸天的教程請參考China Laravel
http://d.laravel-china.org/do...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/25621.html
摘要:已經取消了參數,都用來執行。取數據的過程事物處理已經打開。取得符合條件的隊列后程序會更新該條數據,并且更新完后即。 connections => [ .... database => [ driver => database, table => jobs, queue => defaul...
摘要:提供了開箱即用的隊列服務,隊列允許您延遲處理耗時的任務,例如發送電子郵件,直到稍后的時間。推遲這些耗時的任務會大大加速您的應用程序的請求。 Laravel提供了開箱即用的隊列服務,隊列允許您延遲處理耗時的任務,例如發送電子郵件,直到稍后的時間。推遲這些耗時的任務會大大加速您的應用程序的Web請求。 一、生成隊列表 php artisan queue:table php artisan...
摘要:最簡化權限管理系統,基于開發。基于開發,唯一優化的是用權限和路由別名綁定,這樣代碼寫好之后就可以直接使用。如果是超級管理員,即使沒有這個權限會自動賦予權限給超級管理員角色。默認管理員賬號密碼。然后正常執行命令其他命令即可。 Any 最簡化權限管理系統,基于 Laravel5.4 開發。由于 Laravel5.5 發布推遲,只好先寫個 Laravel5.4版本的,后面再升級上去。演示地址...
摘要:查找保存下載用搭建自己的緩存倉庫權限管理的好選擇基于封裝的后臺管理系統,支持手機和端訪問支付寶風格的驗證器后臺系統微信接口的部署腳本開發的博客系統百度推送自動記錄用戶行為擴展一個項目管理系統根據生成對應導航的狀態 1.debug https://github.com/barryvdh/l... showImg(https://segmentfault.com/img/bVmhWL); ...
摘要:之前的版本用的管理全段資源,版本開始使用的來管理。不過,并不是強制要求在開發期間使用它。發布問題標題標題編輯器容器內容發布問題實例化編輯器設置如果沒有預加載,否則不會出現 Laravel5.4 之前的版本用 gulp 的 laravel-elixir管理全段資源,Laravel5.4 版本開始使用webpack 的 Laravel Mix 來管理。 一、簡介 Laravel Mix 提...
閱讀 2380·2023-04-25 19:27
閱讀 3492·2021-11-24 09:39
閱讀 3909·2021-10-08 10:17
閱讀 3400·2019-08-30 13:48
閱讀 1934·2019-08-29 12:26
閱讀 3124·2019-08-28 17:52
閱讀 3540·2019-08-26 14:01
閱讀 3537·2019-08-26 12:19