laravel队列

laravel redis队列

1、创建job队列任务

shell 复制代码
php artisan make:job StoreUser

执行上述命令后,会生成app/Jobs/StoreUser.php文件,编辑文件内容如下:

php 复制代码
<?php

namespace App\Jobs;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\DB;

class StoreUser implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    /**
     * Create a new job instance.
     *
     * @return void
     */
    public function __construct()
    {
    }

    /**
     * 执行队列的时候就会执行该handle方法
     *
     * @return void
     */
    public function handle()
    {
        var_dump("开始队列了....");

        Db::table('student')->insert(['name'=>'Xiao San2']);

        var_dump("laravel自定义队列触发了");
    }

    public function fail($exception = null)
    {
        dd('发送失败');
    }
}

二、书写控制器TestController.php方法如下:

php 复制代码
<?php

namespace App\Http\Controllers;

use App\Jobs\StoreUser;

class TestController extends Controller
{
    public function index()
    {
        //加入到队列中,延迟60秒
        $job = (new StoreUser())->delay(60);
        $this->dispatch($job);

        return response()->json(['msg' => "测试队列...ok~~~"]);
    }
}

三、添加web.php路由

php 复制代码
<?php

use Illuminate\Support\Facades\Route;

Route::get('index', [\App\Http\Controllers\TestController::class, 'index']);

四、.env文件的QUEUE_CONNECTION项修改为如下配置

shell 复制代码
QUEUE_CONNECTION=redis

五、开始执行测试

①首先命令行执行命令:

shell 复制代码
php artisan queue:work

改命令用于监听往队列中添加任务的

②浏览器访问路由 localhost/laravel_blog/public/index

返回信息如下:

html 复制代码
{
	msg: "测试队列...ok~~~"
}

③查看redis中的任务数据

④查看控制台信息

⑤60秒以后,redis队列中的数据就被消费了,没有了

注意一条:

保证你的浏览器请求时的服务PHP版本和PHP命令行版本一致并且是同一个PHP,否则会采坑!!!特别是对一个机器上安装了多版本的PHP用户,这就是个大坑!!!

相关推荐
treesforest3 分钟前
网络安全中的IP地址查询:从日志里的一条线索到溯源的关键证据
网络·web安全·php
1570925113424 分钟前
Android 架构模式详解:从 MVC、MVP 到 MVVM
android·架构·mvc
aaajj1 小时前
Android手机连接鼠标情况
android
其实防守也摸鱼2 小时前
SQL注入实验笔记
android·运维·数据库·安全·oracle·自动化
找茬小王子2 小时前
Android原生Monkey工具的使用
android·monkey
wjcroom2 小时前
实现老型号HP打印机手机无线打印的一些步骤和方法
开发语言·智能手机·php
Days20502 小时前
时间胶囊项目正式发布
javascript·gpt·php
Code Man2 小时前
实现 Android 字符设备驱动
android·驱动开发·lineageos
传奇开心果编程2 小时前
【Flutter入门练中学】第3课:滚动与列表
android·学习·flutter·ui·ios
JosieBook3 小时前
【数据库】MySQL 实战精通系列 · 第4篇:索引原理与执行计划实战
android·数据库·mysql