Laravel 5.2 Queue队列基于Windows实现

场景

  1. 需要耗时的任务

  2. 为了保证送达率,出错后需要重试的任务

配置

底层配置文件是config/queue.php

如果是用数据库database作队列驱动,就需要一张数据表来存放任务,这些操作都可以使用laravel的数据迁移完成

php artisan queue:table

php artisan migrate

.env文件中设置队列驱动为数据库

QUEUE_DRIVER=database

编写任务类

运行以下命令将会在app/Jobs目录下生成一个新的类

php artisan make:job MyJob

打开新创建的类app/Jobs/MyJob

handle方法在任务被队列处理的时候被调用,注意我们可以在任务的handle方法中进行依赖注入。

推送任务到队列

默认的 Laravel 控制器app/Http/Controllers/Controller.php使用了DispatchesJobs trait。所以继承的类中可以直接使用推送任务到队列的方法dispatch方法

dispatch(new MyJob());
        dd($result);
    }

}

至此一个队列服务demo就完成了,在浏览器访问路由,队列就会被保存在数据库中



那么接下来如何运行队列中的任务呢?

运行队列监听器

php artisan queue:work --daemon

直接运行该命令即可继续队列中的任务
查看日志storage/logs/laravel.log,测试成功

[2018-04-26 08:27:05] local.INFO: 队列测试2018-04-26 08:27:05

Windows定时任务

创建一个.bat文件,写入队列监听的命令

d:
cd D:\WWW\demo
php artisan queue:work --daemon

输入win+R 然后输入 taskschd.msc 进入定时任务设置界面,创建
启动程序一栏填入.bat脚本路径即可

你可能感兴趣的:(Laravel 5.2 Queue队列基于Windows实现)