首先你得安装上redis,并添加redis扩展
配置
在 .env 中指定队列驱动为redis
QUEUE_DRIVER=redis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
redis 远程登录的话,需要另外的配置,具体自行百度。
编写job
php artisan make:job TestQueue
在 app/Jobs 下会有该php文件,然后在 handle() 中写需要执行的操作,比如下面这样:
file_put_contents('queue.txt',date('Y-m-d H:i:s',time()).'执行'."\n",FILE_APPEND);
分发任务
新建控制器,在 Controller 的方法中,分发任务到指定队列(testQueue)中去
dispatch(new TestQueue())->onQueue('testQueue');
现在访问Controller 方法对应的路由时,你会发现redis中会存上相关的队列信息,但是没有执行写文件方法(file_put_contents),也就是说现在只是把job放入到队列中而已,下一步才是执行队列中的任务。
执行队列
php artisan queue:work redis --queue=testQueue
参考文档:laravel中文文档之队列