亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

Laravel中使用Queue的最基本操作教程講解

2020-03-22 17:38:28
字體:
來源:轉載
供稿:網友
Laravel隊列服務為各種不同的后臺隊列提供統一的API,下面這篇文章主要給大家介紹了關于Laravel中使用Queue的最基本操作教程,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧。

前言

laravel中的隊列服務跟其他隊列服務也沒有什么不同,都是最符合人類思維的最簡單最普遍的流程:有一個地方存放隊列信息,一個PHP進程在運行時將任務寫入,另外一個PHP守護進程輪詢隊列信息,將達到執行要求的任務執行并刪除。由于PHP是url驅動的同步語言,本身是阻塞的,所以laravel提供一個守護進程工具來查詢并執行隊列信息也就不足為奇了。

這兩天初次接觸 Laravel 的隊列,也是搞了好一會。。。一番折騰下來還是感慨對 Laravel 不得其門,文檔寫的相對簡單和概括,看源碼又有些力不從心(不過看源碼慢慢調試驗證還是最可靠的)。

下面是我的一個簡單 Demo,僅僅使用了隊列的最基本操作,偏高級的操作需要再去好好時間一番 :)

和我一樣入門 Laravel 的隊列有些困難的同學可以交流一下。

配置

添加 Redis 包

在 composer.json 中 require 部分加入 predis/predis : ~1.0 ,,然后 composer up 更新一下即可。

database.php

在 database.php 配置文件中對 redis 數據庫部分進行配置,默認有一個 default 連接,就用這個好了:)

根據這個默認連接中需要的配置項,編輯 .env 配置文件,將其中的 REDIS_HOST、REDIS_PASSWORD、REDIS_PORT 填寫成自己服務器中 Redis 的相應值。

queue.php

首先需要去 .env 中配置 QUEUE_DRIVER,因為現在打算用 Redis,所以配置成 redis。

接著配置 queue.php 里 connections 部分的 redis 連接,其中 connection 對應的值就是 database.php 中 redis 的那個 default 連接。

任務類

接下來就是寫實際的操作類了,Laravel 提供了 artisan 命令簡化創建任務類:

php artisan make:job Demo

在 app 目錄下會生成 Jobs 目錄,里面已經有了 Demo.php 任務類。

Lumen 可沒有這個 artisan 命令,不過也很方便,默認會有一個 ExampleJob.php 已經寫好了,拷貝一份改個名字即可。
先寫個簡單的日志輸出測試一下好了,在 handle 方法中:

Log::info( Hello, queue 

發放任務

現在寫個入口函數,推送任務到隊列中。使用輔助函數 dispatch():

Laravel 中使用如下方式:

Demo::dispatch();

Lumen 中使用如下方式:

dispatch(new Demo);

開啟隊列

順利的話,這是最后一步了。命令行中執行:

php artisan queue:listen --queue=default

它會監聽隊列,并輸出簡單的執行情況,比如:

[2017-11-07 02:12:47] Processing: App/Jobs/Demo[2017-11-07 02:12:47] Processed: App/Jobs/Demo

沒啥問題后就可以讓這個隊列腳本執行在后臺:

php artisan queue:work --daemon --quiet --queue=default 1 /dev/null 2 1

進階一下 :)

推送到隊列中時,一般會有傳參的需求,那這里怎么傳呢?

參數傳遞

傳入

在入口函數中傳入參數方式如下:

Laravel 中使用如下方式:

$param = Stephen Demo::dispatch($param);

Lumen 中使用如下方式:

$param = Stephen dispatch(new Demo($param));

接收

在任務類中接收參數方式如下:

protected $param; * Create a new job instance. * @return voidhtml' target='_blank'>public function __construct($param) $this- param = $param; * Execute the job. * @return voidpublic function handle() Log::info( Hello, . $this- param);}

初次嘗試到此為止,還有許多高級用法,比如延遲分發、錯誤處理、優先級、失敗處理等,后續會繼續寫 :)

多隊列

這是一個必然需要考慮到的問題,我不可能將所有任務都放在一個叫 default 的隊列中,這樣不容易對隊列進行管理。

要指定不同的隊列,非常簡單,在 dispatch() 后緊接著跟上 onQueue() 方法即可:

Demo::dispatch()- onQueue( emails 

不對啊,我好像沒有定義過這個叫 emails 的 queue。嗯,自然需要做出一點改動,在 queue.php 配置文件中的 redis 配置 queue 從 default 改為 {default},這樣做的效果就是隊列的名稱可以從運行的時候動態拿到,而不是寫死的。

如果使用 Lumen 框架,那么直接這么寫會報錯:Call to a member function onQueue() on string。

原因在于 Lumen 的 Job 基類中并沒有使用 Illuminate/Foundation/Bus/Dispatchable 這個 trait,而是直接使用 Illuminate/Bus/Queueable 中的 onQueue() 方法。

那么現在就很清楚了,我們的 Job 類使用了 Illuminate/Bus/Queueable 這個 trait,所以需要在 Job 類上調用這個 onQueue() 方法。

$job = new XXXJob();dispatch($job- onQueue( queue-name 

當我們在開啟隊列的時候:

php artisan queue:work --queue=emails

這里指定的隊列名 emails 和 dispatch 時指定的隊列名保持一致即可。

總結

您可能感興趣的文章:

詳解Yaf框架PHPUnit集成測試方法講解

快速解決PHP調用Word組件DCOM權限的問題講解

PHP獲取數組中指定的一列實例講解

以上就是Laravel中使用Queue的最基本操作教程講解的詳細內容,PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
最新69国产成人精品视频免费| 日本在线精品视频| 亚洲精品福利视频| 国产成人一区二区三区电影| 成人有码视频在线播放| 久久精品99国产精品酒店日本| 久久男人资源视频| 亚洲尤物视频网| 日韩精品免费综合视频在线播放| 久热精品视频在线免费观看| 在线看日韩av| 久久久欧美一区二区| 亚洲理论在线a中文字幕| 欧美成人精品h版在线观看| 国产精品com| 尤物yw午夜国产精品视频明星| 欧美成人第一页| 亚洲色图在线观看| 亚洲欧美日韩精品久久奇米色影视| 国产精自产拍久久久久久| 亚洲美女自拍视频| 成人免费看黄网站| 成人久久久久爱| 亚洲成人xxx| 国产精品视频永久免费播放| 亚洲社区在线观看| 久久久久久久久国产| 国产精品久久一| 国产精品a久久久久久| 欧美一区二区大胆人体摄影专业网站| 亚洲国产中文字幕在线观看| 麻豆国产va免费精品高清在线| 欧美成人精品一区| 亚洲午夜性刺激影院| 亚洲欧美精品在线| 欧美综合激情网| 欧美激情中文网| 亚洲精品按摩视频| 777777777亚洲妇女| 国产精品久久久久久av福利软件| 日韩精品www| 国产精品成人aaaaa网站| 2019国产精品自在线拍国产不卡| 最近2019好看的中文字幕免费| 亚洲最大福利视频网| 91精品国产乱码久久久久久久久| 日本一区二区在线播放| 欧美电影免费在线观看| 成人情趣片在线观看免费| 日韩中文在线中文网在线观看| 川上优av一区二区线观看| 亚洲老头老太hd| 国产精品久久久久9999| 色无极亚洲影院| 日韩av资源在线播放| 成人美女av在线直播| 92国产精品视频| 欧美又大又粗又长| 性色av香蕉一区二区| 亚洲国产日韩欧美在线图片| 91久久中文字幕| 欧美成年人视频| 97在线免费观看视频| 久久夜色精品亚洲噜噜国产mv| 日韩美女视频中文字幕| 亚洲激情视频在线播放| 精品女厕一区二区三区| 国产一区二区三区日韩欧美| 国产精品99久久99久久久二8| 亚洲欧美在线免费| 久久亚洲精品一区二区| 亚洲影院色无极综合| 国产欧美久久一区二区| 亚洲最大av网站| 国外成人性视频| 亚洲成人久久久久| 国产精品成人av性教育| 7777kkkk成人观看| 国产在线拍揄自揄视频不卡99| 久久久女女女女999久久| 最近免费中文字幕视频2019| 91麻豆桃色免费看| 亚洲午夜精品久久久久久久久久久久| 欧美日韩激情网| 欧美亚洲视频一区二区| 久热精品视频在线观看一区| 国产精品网站入口| 色老头一区二区三区| 国产男人精品视频| 欧美性极品少妇精品网站| 亚洲欧洲午夜一线一品| 91国产一区在线| 91精品视频专区| 人人澡人人澡人人看欧美| 97视频在线免费观看| 97精品国产97久久久久久免费| 亚洲精品一区二区三区婷婷月| 国产成人精品日本亚洲| 国产一区二区动漫| 97精品欧美一区二区三区| 成人免费淫片aa视频免费| 欧美精品一区二区三区国产精品| 亚洲风情亚aⅴ在线发布| 日本不卡视频在线播放| 国产精品自拍偷拍| 亚洲日韩欧美视频一区| 亚洲天堂成人在线视频| 久久久亚洲成人| 奇米影视亚洲狠狠色| 97视频在线观看网址| 成人做爽爽免费视频| 久99九色视频在线观看| 深夜福利国产精品| 欧美日韩在线第一页| 久久久久久噜噜噜久久久精品| 亚洲国产精品久久91精品| 亚洲免费影视第一页| 亚洲日本成人网| 国产日韩换脸av一区在线观看| 成人网在线免费观看| 98午夜经典影视| 国产一区红桃视频| 久久久久久久久爱| 国产精品一二三在线| 欧美高清在线视频观看不卡| 最近2019中文字幕mv免费看| 欧美成人免费va影院高清| 日韩在线免费高清视频| 久久久久久有精品国产| 亚州欧美日韩中文视频| 成人女保姆的销魂服务| 91性高湖久久久久久久久_久久99| 日韩a**站在线观看| 日韩美女在线播放| 在线精品91av| 日韩大陆毛片av| 91精品国产91久久久久福利| 精品国产一区二区三区久久狼5月| 日本a级片电影一区二区| 国产精品av在线| 综合国产在线视频| 国产精品极品在线| 亚洲a级在线播放观看| 一区二区三区在线播放欧美| 亚洲一级免费视频| 欧洲亚洲免费在线| 中文字幕视频一区二区在线有码| 这里只有精品丝袜| 亚洲2020天天堂在线观看| 91av视频在线免费观看| 欧美猛男性生活免费| 久久精品国产69国产精品亚洲| 久久91亚洲精品中文字幕奶水| 国产一区二区三区18| 一区二区中文字幕| 国产精品视频26uuu| 国产成人高潮免费观看精品| 精品一区电影国产| 久久精品99久久久久久久久| 欧美极品欧美精品欧美视频| 欧美激情亚洲综合一区| 97色在线播放视频| 成人黄色免费网站在线观看| 国产精品久久久久久久久久久新郎|