laravel队列

编程入门 行业动态 更新时间:2024-10-24 21:32:16

laravel<a href=https://www.elefans.com/category/jswz/34/1771257.html style=队列"/>

laravel队列

laravel redis队列

1、创建job队列任务

php artisan make:job StoreUser

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

<?phpnamespace 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方法如下:

<?phpnamespace 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路由

<?phpuse Illuminate\Support\Facades\Route;Route::get('index', [\App\Http\Controllers\TestController::class, 'index']);

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

QUEUE_CONNECTION=redis

五、开始执行测试

①首先命令行执行命令:

php artisan queue:work

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

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

返回信息如下:

{msg: "测试队列...ok~~~"
}

③查看redis中的任务数据

④查看控制台信息

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

注意一条:

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

更多推荐

laravel队列

本文发布于:2023-12-04 19:34:34,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1662007.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:队列   laravel

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!