这篇文章给大家介绍如何在Laravel5中配置并使用队列,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
Laravel是什么
Laravel是一套简洁,优雅的PHP Web开发框架。它可以让你从面条一样杂乱的代码中解脱出来,它可以帮你构建一个完美的网络应用,而且每行代码都可以简洁,富于表达力。
<强> 1。队列服务配置强>
在配置文件队列。php的<代码>连接> 代码中已经默认定义了<代码>复述,> 代码的连接:
& # 39;复述,,,=祝辞,( ,& # 39;司机# 39;,,=祝辞,& # 39;复述,# 39; ,& # 39;连接# 39;,=祝辞,& # 39;默认# 39; ,& # 39;队列# 39;,,=祝辞,& # 39;默认# 39; ,& # 39;到期# 39;,,=祝辞,60岁, ],
在<强>。env 强>环境配置文件中把默认的队列驱动改成<代码>复述,代码>:
QUEUE_DRIVER=复述,
为了避免配置缓存的影响,执行以下命令清除并重建配置缓存:
php artisan 配置:缓存
<强> 2。新建Queueable工作强>
使用命令:
php artisan : job MyJob
新建一个名为<强> MyJob >强的队列处理类,在<代码>应用程序/工作> 代码目录下自动生成一个<强> MyJob。php >强文件。
MyJob.php需要实现<代码> 代码>处理方法,用来具体执行队列任务,构造函数可以用来传递需要的参数,<代码> 代码>处理方法支持依赖注入。
这里<代码> 代码>处理方法随便写了一个,就是往一个<代码> 代码>列表类型数据结构中存一个<代码>键值> 代码数据,测试消费队列的时候有没有起作用,构造函数传两个参数就是<代码>键代码>和<代码> 代码>价值。
& lt; php ? namespace 应用\工作; use 应用\工作\工作; use 照亮\ \ SerializesModels队列; use 照亮\ \ InteractsWithQueue队列; use 照亮\ \队列\ ShouldQueue合同; use 阐明\ \外墙\复述的支持; class MyJob  extends Job  implements ShouldQueue { ,use InteractsWithQueue, SerializesModels; ,private 美元关键; 美元,private 价值;/* * *,才能Create a new job 实例。 ,* *,才能@return 空白 ,*/,public function  __construct(键,美元,美元值) ,{ 这→美元才能key =,美元的关键; 这个美元才能→value =,美元价值; ,}/* * *,才能Execute 从而工作。 ,* *,才能@return 空白 ,*/,public function 处理() ,{ 复述才能::hset (& # 39; queue.test& # 39;,, $ this→键,,这→美元值); ,} ,public function 失败() ,{ 转储才能(& # 39;失败# 39;); ,} }
在控制器中使用<代码> 代码>方派遣法调用队列,将任务放入队列中,控制器中写个方法如<代码>公共功能测试()代码>,<代码>新MyJob> 代码的构造函数传两个随机生成的字符串参数:
queueId 美元;=,这→美元分派(new MyJob (& # 39; key_& # 39; .str_random (4), str_random (10))); dd ($ queueId);
配置并访问路由,可以多访问几次,然后到<代码>复述,代码>中查看,会发现把队列存入了一个队列<代码>::队列:默认代码>的<代码> 代码>列表结构中:
其中<代码> 代码>价值内容如下,这是转换成json <代码> 代码>格式的,而实际上是经过序列号的字符串:
{ ,“job":“照亮\ \ \ \ CallQueuedHandler@call"排队, ,“data": { “command"才能:,“O: 14: \“App \ \工作\ \ MyJob \“: 6: {s: 19: \“\ u0000App \ \工作\ \ MyJob \ u0000key \“;我:1;销售:21:\“\ u0000App \ \工作\ \ MyJob \ u0000value \“;我:2;销售:10:\“连接\“;N, s: 5: \“队列\“;N, s: 5: \“延迟\“;N, s: 6: \“\ u0000 * \ u0000job \“; N;}, }, ,“id":,“EV2bhqUlx0T8pRCVHw1qT0fkP8AQcyI8" ,“attempts": 1 }
这里<代码> 代码>数据参数里包含了队列服务工作<代码>