Jump24——Laravel 开发人员,精准到位。绝不外包。绝不离岸外包。始终卓越。

Laravel 12.53.0 中的缓存并发限制

最后更新于 经过

Laravel 12.53.0 图片中的缓存并发限制

Laravel v12.53.0 引入了 Cache::funnel() 对于任何支持锁的缓存驱动程序支持的并发限制,为事件分发和广播添加了命名参数支持,并使用预计算的 tsvector 列支持扩展了 PostgreSQL 全文搜索。

主要亮点包括:

  • Cache::funnel() 针对缓存支持的并发限制
  • 事件分发和广播中的命名参数
  • whereFullText 预计算 tsvector 列的 vector 选项(PostgreSQL)
  • buildMorphMapFromModels() 接受数组键
  • php artisan down 可以就地刷新维护模式选项。
  • 日程组上的事件宏

什么是新的

Cache::funnel() 并发限制

Cache::funnel() 为所有支持原子锁的缓存驱动程序(包括数组、文件、数据库和 Redis 驱动程序)带来并发限制功能。此前,Laravel 中的并发限制依赖于…… Redis::funnel() 这需要建立 Redis 连接。这种新的外观方法适用于所有驱动程序,并使用缓存层中已有的相同锁原语。

缓存 :: 漏斗 “支付处理”
-> 限制 3
-> 释放后 60
-> 然后
fn () => 处理付款 (),
fn () => “目前已满负荷运转”
(英文):
  • limit(int $slots) — 允许的最大并发操作数
  • releaseAfter(int $seconds) — 自动释放前需要按住锁定键多长时间
  • block(int $timeout) — 等待多久才放弃?
  • then(callable $success, callable $failure) — 当槽位被获取时运行成功回调函数,当槽位被阻塞时运行失败回调函数。

如果驱动程序不支持锁,则 BadMethodCallException 抛出异常。当阻塞超时到期而没有失败回调时,会抛出异常。 LimiterTimeoutException 被提起。

拉取请求: #58439

事件分发和广播中的命名参数

Dispatchable trait 现在支持在调用时使用命名参数 dispatch()broadcast() 在事件类上。之前使用的特性 func_get_args() 内部实现会丢弃参数名称。切换到可变参数语法后,命名参数就可以传递给事件构造函数。

// 之前 — 仅位置参数
事件 新的 用户订阅 ($用户,$套餐,$元数据));
// 之后——命名参数现在可以正常工作了
用户订阅 :: 派遣
用户 :$user,
计划 :$plan,
元数据 :[ '来源' => '查看' ],
(英文):

这与作业调度处理命名参数的方式一致。现有的位置参数调用无需更改即可继续正常工作。

拉取请求: #58913

使用预计算的 tsvector 列进行 PostgreSQL 全文搜索

whereFullText() 获得 vector PostgreSQL 的一个选项,可以将列视为预先计算的 tsvector,而不是将其包装在 tsvector 中。 to_tsvector() 每次查询都会如此。当您维护一个专用查询时,这非常有用。 tsvector 列(通常使用 GIN 建立索引)以避免在查询时重新计算向量的开销。

// 不使用 vector 选项 — 将列包装在 to_tsvector() 中
$查询 -> whereFullText '身体' , $term, [ '语言' => '英语' ]);
// 使用向量选项 — 直接使用该列
$查询 -> whereFullText '搜索向量' , $term, [
'向量' => 真的 ,
'语言' => '英语' ,
'模式' => “网络搜索” ,
]);
// 也适用于多个 tsvector 列
$查询 -> whereFullText ([ 'tsv_title' , 'tsv_body' ], $term, [ '向量' => 真的 ]);

拉取请求: #58893

buildMorphMapFromModels() 接受数组键

buildMorphMapFromModels() 现在,在从模型类构建变形映射时,接受任何数组键类型——字符串或整数。此前,该参数仅接受列表式整数键数组,这导致无法使用自定义字符串别名:

// 自定义字符串别名现在可以正常工作了
关系 :: 从模型构建形态映射 ([
'邮政' => 邮政 ::班级 ,
'视频' => 视频 ::班级 ,
]);

拉取请求: #58891

维护模式 down 刷新现有选项

php artisan down 现在,即使应用程序已处于维护模式,也可以重新运行该命令来更新选项(例如密钥、消息或重试值),而无需先重新启动网站。以前,您必须运行该命令。 php artisan up 在更改维护模式设置之前。

# 将网站置于维护模式
php 工匠 向下 --秘密= “我的秘密”
# 更新密钥,无需重启网站
php 工匠 向下 --秘密= “新秘密”

拉取请求: #58918

日程组上的事件宏

计划命令 Event 现在可以将宏应用于计划组,允许将共享行为注册一次,并将其应用于组中的所有命令,而不是单独应用于每个条目。

拉取请求: #58926

错误修复和性能改进

数据库:

  • 修复跨数据库空值安全相等操作( #58962
  • 在提交死锁重试之前,回滚残留的 PDO 状态( #58906

队列和作业:

  • 修复队列作业中的模型序列化问题 #58939
  • 使固定 RetryCommand 不适用于 SQS FIFO 队列( #58936
  • 确保 oldest_pending 显示正确 queue:monitor#58952

HTTP 和缓存:

  • 修复创建实时外观缓存文件时的竞态条件( #58947
  • 使固定 RequestException 总结 Guzzle 流式响应( #58909
  • 缓存现在支持可序列化的类值( #58911

测试:

  • 显示所有不匹配的值 assertSessionHasAll 失败输出( #58946

邮件:

  • 更改文本对齐方式 leftstart 为了更好地支持 RTL 语言( #58935

参考

保罗·雷德蒙德照片

Laravel News 特约撰稿人。全栈 Web 开发人员兼作家。

归档于:
立方体

Laravel 时事通讯

加入超过 4 万名开发者的行列,不错过任何新的技巧、教程等内容。

图像
银行

外包一位专属 Laravel 开发人员,每月费用为 3200 美元。我们拥有十余年的 Laravel 开发经验,能够以实惠的价格提供快速、高质量且经济高效的解决方案。

访问 Bacancy
银行标志

银行

只需每月 3200 美元,即可聘请一位拥有 4-6 年经验的资深 Laravel 开发人员,为您的项目注入强劲动力。您将获得 160 小时的专属专业服务,并享受 15 天无风险试用。立即预约通话!

银行
Tinkerwell 徽标

廷克威尔

Laravel 开发者必备的代码运行器。可在本地和生产环境中体验 AI、自动补全和即时反馈功能。

廷克威尔
几天内即可获得 Laravel 代码审查徽标的专家指导

几天内即可获得 Laravel 代码审查方面的专家指导

专家级代码审查!两位拥有 10 年以上 Laravel 开发经验的开发者将为您提供清晰、实用的反馈,帮助团队构建更优质的应用程序。

几天内即可获得 Laravel 代码审查方面的专家指导
PhpStorm 标志

PhpStorm

首选的 PHP IDE,对 Laravel 及其生态系统提供广泛的开箱即用支持。

PhpStorm
Laravel Cloud 标志

Laravel 云

轻松创建和管理服务器,并在几秒钟内部署 Laravel 应用程序。

Laravel 云
了解 Softtech 的标志

了解软科技

Acquaint Softtech 提供 AI 就绪的 Laravel 开发人员,48 小时内即可上手,每月费用为 3000 美元,没有冗长的销售流程,并提供 100% 退款保证。

了解软科技
Kirschbaum 标志

樱桃树

提供创新和稳定性,确保您的Web应用程序取得成功。

樱桃树
Shift 标志

转移

还在运行旧版本的 Laravel?立即实现 Laravel 自动升级和代码现代化,让您的应用程序保持最新状态。

转移
鱼叉:新一代时间跟踪和发票标志

Harpoon:新一代时间跟踪和发票系统

新一代时间跟踪和计费软件,帮助您的机构规划和预测盈利的未来。

Harpoon:新一代时间跟踪和发票系统
Lucky Media 标志

幸运传媒

Get Lucky Now——拥有十余年经验的 Laravel 开发理想之选!

幸运传媒
SaaSykit:Laravel SaaS 入门套件徽标

SaaSykit:Laravel SaaS 入门套件

SaaSykit 是一个多租户 Laravel SaaS 入门套件,包含运行现代 SaaS 所需的所有功能,例如支付、美观的结账界面、管理面板、用户仪表盘、身份验证、现成组件、统计数据、博客、文档等等。

SaaSykit:Laravel SaaS 入门套件
Inertia v2.3.16 镜像中新增了提升指南和技能

Inertia v2.3.16 版本新增了提升指南和技能

阅读文章
Laravel 发布了面向 Laravel 和 PHP 镜像的 AI 代理技能开放目录

Laravel 发布了面向 Laravel 和 PHP 的 AI 代理技能开放目录

阅读文章
Filament 五周年庆典精彩纷呈!图片

Filament 五周年庆典精彩纷呈!

阅读文章
Laravel 12.53.0 图片中的缓存并发限制

Laravel 12.53.0 中的缓存并发限制

阅读文章
防止 API 故障导致队列崩溃 — Laravel 镜像的 Fuse

防止 API 故障导致队列崩溃 — Fuse for Laravel

阅读文章
Blaze:一款针对 Laravel 镜像的优化 Blade 模板编译器

Blaze:一款针对 Laravel 的优化型 Blade 模板编译器

阅读文章