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

溫馨提示×

溫馨提示×

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

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

如何在Laravel5中配置并使用隊列

發布時間:2021-03-05 17:07:58 來源:億速云 閱讀:227 作者:Leah 欄目:開發技術

這篇文章給大家介紹如何在Laravel5中配置并使用隊列,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

Laravel 是什么

Laravel 是一套簡潔、優雅的PHP Web開發框架。它可以讓你從面條一樣雜亂的代碼中解脫出來;它可以幫你構建一個完美的網絡APP,而且每行代碼都可以簡潔、富于表達力。

1.隊列服務配置

在配置文件queue.php的connections中已經默認定義了redis的連接:

'redis' => [
 'driver'  => 'redis',
 'connection' => 'default',
 'queue'  => 'default',
 'expire'  => 60,
],

.env環境配置文件中把默認的隊列驅動改成redis

QUEUE_DRIVER=redis

為了避免配置緩存的影響,執行以下命令清除并重建配置緩存:

php artisan config:cache

2.新建Queueable Jobs

使用命令:

php artisan make:job MyJob

新建一個名為MyJob的隊列處理類,在App/Jobs目錄下自動生成一個MyJob.php文件。

如何在Laravel5中配置并使用隊列

MyJob.php需要實現handle方法,用來具體執行隊列任務,構造函數可以用來傳遞需要的參數,handle方法支持依賴注入。

這里handle方法隨便寫了一個,就是往一個list類型數據結構中存一個key-value數據,測試消費隊列的時候有沒有起作用,構造函數傳兩個參數就是keyvalue.

<?php

namespace App\Jobs;

use App\Jobs\Job;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Support\Facades\Redis;

class MyJob extends Job implements ShouldQueue
{
 use InteractsWithQueue, SerializesModels;

 private $key;
 private $value;

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

 /**
  * Execute the job.
  *
  * @return void
  */
 public function handle()
 {
  Redis::hset('queue.test', $this->key, $this->value);
 }

 public function failed()
 {
  dump('failed');
 }
}

在控制器中使用dispatch方法調用隊列,將任務放入隊列中,控制器中寫個方法如public function test()new MyJob的構造函數傳兩個隨機生成的字符串參數:

$queueId = $this->dispatch(new MyJob('key_'.str_random(4), str_random(10)));
dd($queueId);

配置并訪問路由,可以多訪問幾次,然后到Redis中查看,會發現把隊列存入了一個queue::queue:defaultList結構中:

如何在Laravel5中配置并使用隊列

其中value內容如下,這是轉換成json格式的,而實際上是經過序列號的字符串:

{
 "job": "Illuminate\\Queue\\CallQueuedHandler@call",
 "data": {
  "command": "O:14:\"App\\Jobs\\MyJob\":6:{s:19:\"\u0000App\\Jobs\\MyJob\u0000key\";i:1;s:21:\"\u0000App\\Jobs\\MyJob\u0000value\";i:2;s:10:\"connection\";N;s:5:\"queue\";N;s:5:\"delay\";N;s:6:\"\u0000*\u0000job\";N;}"
 },
 "id": "EV2bhqUlx0T8pRCVHw1qT0fkP8AQcyI8",
 "attempts": 1
}

這里data參數里包含了隊列服務Job的名稱,構造函數的參數等信息,消費者執行任務的依據。attempts表示重試的次數,往往執行隊列任務失敗了會重試,可以設置最多嘗試次數。

3.消費隊列

這個時候任務只是入了隊列,但并沒有消費,執行:

php artisan queue:listen

這個命令,Laravel就開始消費隊列。

如何在Laravel5中配置并使用隊列

可以看到這幾個任務以此被消費,再去Redis看看有沒有實現預期要達到的效果,每個任務往一個List類型的結構寫入數據。

如何在Laravel5中配置并使用隊列

關于如何在Laravel5中配置并使用隊列就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

论坛| 黄龙县| 喜德县| 霸州市| 大兴区| 定日县| 霍邱县| 涟水县| 方山县| 迭部县| 东源县| 通州区| 荆门市| 新宾| 大同市| 黄平县| 伊宁县| 曲阜市| 咸宁市| 旺苍县| 新营市| 晋城| 呼和浩特市| 仲巴县| 江达县| 大关县| 芒康县| 汨罗市| 宜黄县| 翁牛特旗| 徐汇区| 津南区| 车致| 新乡县| 土默特左旗| 凌源市| 罗定市| 卢湾区| 攀枝花市| 苏尼特右旗| 定结县|