首页 > 作文

laravel队列

更新时间:2023-04-07 19:29:37 阅读: 评论:0

对列作用
  队列的目的是将耗时的任务延时处理,比如发送邮件,从而大幅度缩短web请求和相应的时间。
  队列进程原理:写一个死循环的脚本在linux系统持续运行,新的队列任务push到这个脚本中。

一、配置
  队列 配置文件存放在config/queue.php 。在该文件中你将会找到框架自带的每一个队列驱动的连接配置,包括数据库、
beanstalkd、 ironmq、 amazon sqs、 redis 以及同步(本地使用)驱动。其中还包含了一个 null 队列驱动以拒绝队
列任务。默认是sync,即同步的,直接处理,无队列.要将其修改为对应的类型,如databa等。
  这次主要探讨 使用databa 保存队列任务。

// 在.env 文件中修改:
queue_driver=databa

// 清除配置缓存。这是个巨坑,测试时因为没执行这一步导致配置不生效,懵逼了许久
php artisan config:cache

二、依赖
  1.数据库依赖:为了使用databa 队列驱动,需要一张数据库表来存放任务,要生成创建该表的迁移,
运行 artisan 命令queue:table ,迁移被创建好了之后,使用migra通大te 命令运行迁移:

  php artisan queue:table
  php artisan migrate

// 数据库会生成以下两张表:
  jobs
  migrations

2.其他队列类型依赖
  下面是以上列出队列驱动需要安装的依赖:
  • amazon sqs: aws/aws-sdk-php ~3.0
  • beanstalkd: pda/pheanstalk ~3.0
  • ironmq: iron-io/iron_mq ~2.0
  • redis: predis/predis ~1.0
注意:

  1、因为我使用两套环境(虚拟机网络事件、本地,两套环境共享项目目录),正常访问的是虚拟机的数据库。但使用 php artisan migrate
  相关命令时报 2002 拒绝连接错误 ,因为在控制台访问到了本地的数据库。所以数据库配置:
  db_host=localhost
  修改为 具体的ip:
  db_host=192.168.82.52
  清除缓存:
  php artisan config:cache

  2、报错:sqlstate[42000]: 1071 specified key was too long; max key length is 767 bytes
动配置迁移生成的默认字符串长度,你可以通过调用 apprviceprovider 中的 schema::defaultstringlength 方法来配置它。
  局部配置:在报错的迁移脚本中加 schema::defaultstringlength(191);
  全局配置:在app\providers\apprviceprovider 的boot方法加schema::defaultstringlength(191);

三、生成任务类
  1、通常,所有的任务类都保存在 app/jobs 目录.如果 app/jobs 不存在,在运行 artisan 命令 make:job 的时候,
它将会自动创建。你可以通过 artisan cli 来生成队列任务类:

  php artisan make:job queuetest

  生成的类 queuetest 都实现了 illuminate\contracts\queue\shouldqueue 接口,
告诉 laravel 将该任务推送到队列,而不是立即运行。

2、在 queuetest.php 的代码如下:
public function handle()
{
sleep(5);
zhang::inrt([ ‘name’ => ‘queue.’ . time() .uniqid(), ‘time’ => time()]);
}

// 在testcontroller.php 控制器的推送任务如下:
public function queuetest()商人妇
{
for($i = 0; $i < 100; $i ++) {
dispatch(new queuetest(“ssss”.$i));
}
exit(‘程序结束’);
}

// routes添加路由:
route::get(‘/queue’, ‘testcontroller@queue’ );

四、启动队列监听
基本命令:

php artisan queue:listen //监听队列请求,只要运行着,就能一直接受请求,除非手动终止;

其他类型的监听、守护进程请参考顶部资料。

五、测试成功
  在浏览器开几个窗口同时访问该地址:localhost/queue , 出现以下情况说明队列任务琵琶行小序翻译推送成功:
  1、访问后,浏览器立即打印 ‘程序结束’ ,说明任务已经压入队列;
  2、进入数据库查看jods表,会发现很多还没执行完的任务;
  3、在控制台会监听到正在运行的进程:
  [2018-01-03 11:53:46] processing: app\jobs\queuetest
  [2018-01-03 1大学班主任1:53:56] procesd: app\jobs\queuetest
  [2018-01-03 11:53:57] processing: app\jobs\queuetest
总结
以上只是对laravel队列的一些基于databa的基础运用,队列的知识远远不止这些。如果你有好的例子分享,欢迎留言。

本文发布于:2023-04-07 19:29:35,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/c38b488886570632730f47931638193a.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:laravel队列.doc

本文 PDF 下载地址:laravel队列.pdf

标签:队列   数据库   命令   你可以
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图