经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » PHP » 查看文章
Laravel 队列使用
来源:cnblogs  作者:Jurij  时间:2021/1/18 16:37:32  对本文有异议

Laravel 队列使用

1.修改根目录

.env 文件的 **QUEUE_CONNECTION **字段配置为 database

Laravel可配置多种队列驱动,包括 "sync", "database", "beanstalkd", "sqs", "redis", "null"(具体参见app/config/queue.php)
其中sync为同步,database为使用数据库,后面三种为第三方队列服务,最后一种为不使用队列。

image-20210114110302367

该位置具体是什么请查看app/queue

image-20210114110110447

2.创建数据库队列表(database方式)

为了使用 database 队列驱动,你需要一张数据表来存储任务。

  1. php artisan queue:table

生产一张队列表

  1. php artisan migrate

mysql版本5.7.7以下可能会报如下错误

image-20210114103312698

解决方案

打开app/Providers/AppServiceProvider文件,在boot方法中加入如下代码,删除数据库中已经生成的迁移数据表,再次运行就可以成功。

一定要删除已经生成的job数据表,否者汇报如下错误

image-20210114104119413

  1. \Schema::defaultStringLength(191); //add fixed sql

数据库最终效果

image-20210114104215137

3.生成任务类

在你的应用程序中,队列的任务类都默认放在 app/Jobs 目录下。

如果这个目录不存在,那当你运行 make:job Artisan 命令时目录就会被自动创建。

你可以用以下的 Artisan 命令来生成一个新的队列任务:

  1. php artisan make:job SetLog

image-20210114104708075

4.在队列类里面的handle方法中写上业务逻辑(比如发送网络请求,发送邮件等等,这里简单写个日志代替)

  1. protected $message;
  2. /**
  3. * Create a new job instance.
  4. *
  5. * @return void
  6. */
  7. public function __construct($message)
  8. {
  9. $this->message = $message;
  10. }
  11. /**
  12. * Execute the job.
  13. *
  14. * @return void
  15. */
  16. public function handle()
  17. {
  18. \Log::info($this->message);
  19. }

  

5.在控制器中加入一个测试方法,直接调用队列类的 dispatch方法,类似生产了一个任务

  1. public function index(Request $request){
  2. SetLog::dispatch(date('Y-m-d H:i:s') . "进入了系统");
  3. }

这时,由于队列还没开启,数据库的队列表中会有一个任务,等待队列启动后执行

image-20210114105632887

6.执行命令开启队列

  1. php artisan queue:work

  这时,队列表中的任务执行后就会自动删除了,类似消费了任务

image-20210114105849527

image-20210114110429097

以上是抛转引玉的一个简单例子,具体细节可以查看laravel的队列文档

原文链接:http://www.cnblogs.com/jurij/p/14276795.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号