前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Laravel 6.14.0 版本发布,支持在响应发送后执行任务

Laravel 6.14.0 版本发布,支持在响应发送后执行任务

作者头像
学院君
发布2020-02-19 12:07:38
1.8K0
发布2020-02-19 12:07:38
举报
文章被收录于专栏:学院君的专栏学院君的专栏

Laravel 开发团队本周发布了 v6.14.0 版本,新增了 dispatchAfterResponse() 方法、在调度器(dispatcher)中支持宏方法、以及支持 NoMigrations 事件。

下面我们来看看一些重要的更新。

1、重要特性

响应后分发任务

调度器中新增了一个 dispatchAfterResponse() 方法,顾名思义,该方法用于在响应发送给客户端之后执行一个任务,对应的使用场景如下:

该方法用于在响应发送后、连接关闭前执行某个任务,其实现原理有点类似终止中间件,会在应用程序处理请求完成之前注册一个可运行的终止回调到应用。

有人可能会说同样的事情可以通过队列任务来完成,确实如此,不过对于一些简单的、非耗时的、需要立即执行的任务,通过这种方式处理更简单一些。

下面是一个简单的使用示例:

代码语言:javascript
复制
SomethingDispatchable::dispatchAfterResponse();
代码语言:javascript
复制

断言空的任务链

QueueFake 类中新增了一个 assertPushedWithoutChain 方法,该方法可用于测试空的任务链:

代码语言:javascript
复制
Queue::fake();

Queue::assertPushedWithEmptyChain(ExampleJob::class);
代码语言:javascript
复制

NoMigrations 事件

当没有任何数据库迁移执行时,现在可以触发一个 NoMigrations 事件,虽然通常我们可能并不会用到这个特性:

代码语言:javascript
复制
// 在迁移类的 up 方法中如何没有任何迁移任务,可以这样触发 NoMigrations 事件
$this->fireMigrationEvent(new NoMigrations('up'));
代码语言:javascript
复制

以上就是本次版本发布的几个新功能,你可以在 Github 上查看完整的更新日志:https://github.com/laravel/framework/blob/d25d45b389aac2492e923a8adf885095474f8d2f/CHANGELOG-6.x.md#v6140-2020-02-04,还可以对比 6.13.0 和 6.14.0 的版本差异:https://github.com/laravel/framework/compare/v6.13.0...v6.14.0。

2、升级明细

下面我们来简单浏览下 6.14.0 版本的更新日志。

新增特性
  • 新增 Illuminate\Bus\Dispatcher::dispatchAfterResponse() 方法
  • 新增 Illuminate\Support\Testing\Fakes\QueueFake::assertPushedWithoutChain 方法
  • Illuminate\Events\Dispatcher 中使用 Macroable trait
  • 新增 NoPendingMigrations 事件
问题修复
  • 使用当前 DB 实例创建 Doctrine 连接
  • vendor:publish 命令中发布标签时移除重复的输出
  • 修复 pluck 方法参数包含空格的问题
  • 修复事件调度器中通配符缓存的问题
  • 修复 RedisStore 中的无限值问题
  • 修复 SqlServer 中删除包含默认值的列的问题
代码调整
  • 在 mysql 8.1 和 pgsql 9.5 的队列工作者中使用 SKIP LOCKED
  • Illuminate\Bus\Queueable::middleware() 中没有合并方法和属性中的中间件
  • Illuminate\Console\Command 中分离 specifyParameter() 方法到 HasParameters trait
  • 确保将数据库字段更改为 JSON 格式不包含字符集

声明:本文翻译整理自 Laravel News。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-02-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 极客书房 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、重要特性
    • 响应后分发任务
    • 2、升级明细
      • 新增特性
        • 问题修复
          • 代码调整
          相关产品与服务
          消息队列 TDMQ
          消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档