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用户,这就是个大坑!!!

相关推荐
草莓熊Lotso19 分钟前
【Linux系统加餐】从原理到封装:基于建造者模式实现System V信号量工业级C++封装
android·linux·运维·服务器·网络·c++·建造者模式
程序员煊子5 小时前
用 Cursor 从零搭一个 Compose 本地记账 App:实战记录与源码解析
android·kotlin·compose·cursor
alexhilton7 小时前
面向Android开发者的Google I/O 2026
android·kotlin·android jetpack
私人珍藏库8 小时前
【Android】豆图助手-永久HY-模拟微X~zfb各种截图
android·app·工具·软件·多功能
程序员陆业聪9 小时前
Shadow实战接入与生产落地:从零搭建到稳定运行
android
程序员陆业聪9 小时前
Shadow Transform:编译期的魔法——字节码替换实战
android
zb2006412010 小时前
Laravel7.x十大核心特性解析
spring boot·后端·laravel
学习3人组12 小时前
思科Packet Tracer 7.4 生成树协议(STP)配置与安全防护上机讲义
网络·安全·php
vx-程序开发13 小时前
基于机器学习的动漫可视化系统的设计与实现-计算机毕业设计源码08339
java·c++·spring boot·python·spring·django·php
imuliuliang13 小时前
Laravel6.x核心特性全解析
android·php·laravel