本文档由 Laravel 学院提供
Laravel 学院致力于提供优质 Laravel 中文学习资源:http://laravelacademy.org
1
一、序言
新版特性
Laravel 5.6 在 Laravel 5.5 的基础上继续进行优化,包括日志系统、单机任务调度、模型序列化优化、动态频率限制、广播频道类、API 资源控制器
生成、Eloquent 日期格式化优化、Blade 组件别名、Argon2 密码哈希支持、引入 Collision 扩展包等等等等。此外,所有的前端脚手架代码都已升
级到 Bootstrap 4,Laravel 底层使用的 Symfony 组件都已升级到 Symfony ~4.0 版本。
Laravel 5.6 版本的发布恰逢 Spark 6.0 的发布,所以这也是自 Laravel Spark 发布以来第一次重大版本升级。Spark 6.0 为 Stripe 和 Braintree 引入
了按座定价功能,以及本地化、Bootstrap 4、增强 UI 和 Stripe Elements 支持。
注:本文档只是概述了框架大部分引人注目的重要升级,要了解详细升级日志可以查看 GitHub 上到 change logs。
日志优化
Laravel 5.6 带来了日志系统的重大升级,所有日志配置都存放在新的 config/logging.php 配置文件,你现在可以轻松构建发送日志消息到多个处
理器的日志”堆栈”。例如,你可以发送所有 debug 级别消息到系统日志同时发送 error 级别消息到 Slack 以便团队成员可以快速响应:
'channels' => [
'stack' => [
'driver' => 'stack',
'channels' => ['syslog', 'slack'],
],
],
此外,现在可以使用日志系统的新”tap”功能很轻松地自定义已存在的日志频道。想要了解更多细节,请查看完整日志文档。
单机任务调度
注:要使用这个新特性,必须使用 memcached 或 redis 缓存驱动作为应用默认缓存驱动。此外,所有服务器必须和同一个中心缓存服务器进行通
信。
如果你的应用运行在多个服务器上,现在可以限定只在一台机器上运行调度任务。例如,假设你有一个在每周五晚上生成新报告的调度任务,如果任
务调度器运行在三个服务器上,这个调度任务就会在三台机器上运行并生成同样的报告三次,这样很不优雅,甚至很糟糕!
要指定任务只在一台机器上运行,可以在定义调度任务时使用 onOneServer 方法,第一台获取到任务的机器会给这个任务上一把原子级别的锁来阻
止其他服务器同时运行同一个任务:
$schedule->command('report:generate')
->fridays()
->at('17:00')
->onOneServer();
动态频率限制
当我们在之前版本的路由群组中指定了频率限制后,必须要硬编码最大请求次数: