v3.0.49 - 2024-05-16
v3.0.49 - 2024-05-16
Added
- #6764 当遇到
Premature end of data错误时,则认为当前数据库连接不可用,下次从连接池中取出来时,会被重连。
v3.0.48 - 2024-04-17
修复
- #6693 修复使用
socket-io时,如果没有传入query会在data中存在?的情况下解析出错的问题。
v3.0.47 - 2024-01-11
优化
- #6455 优化
Hyperf\SocketIOServer\Parser\Decoder::decode()的代码实现。
v3.0.46 - 2023-11-30
修复
- #6321 修复使用
tracer组件时,jaeger无法正确展示HTTP状态码的问题。
v3.0.45 - 2023-11-24
新增
- #6297 新增接口
Hyperf\Crontab\Mutex\ServerNodeInterface用于使用Crontab的onOneServer功能时,自定义唯一键。 - #6300 新增配置
rate_limit.storage.options.pool用于使用限流器时,设置Redis连接池。 - #6306 为
RPC服务增加请求级别生命周期。
修复
- #6298 修复
Hyperf\Framework\Logger\StdoutLogger中的context参数不支持复杂对象的问题。 - #6303 修复
PDO链接在超时时,不会被重试的问题。
优化
- #6302 使用
command模式调用定时任务时,设置setCatchExceptions为 false。 - #6315 优化链路追踪组件从上下文读取
Tracer时,不会多一次实例化的问题。
v3.0.44 - 2023-11-17
新增
修复
优化
- #6293 优化方法
Arr::flatten,使其比之前运行效率更高。
v3.0.43 - 2023-11-10
新增
- #6272 新增开关
metric.enable_command_metric。 - #6273 为
Hyperf\HttpServer\Router\Dispatched增加serverName参数。
优化
- #6261 避免使用
class_uses_recursive时,因为class_parents返回false导致报错的问题。 - #6271 使用
Crontab时,限制匿名函数方式在WorkerStrategy策略中使用。
v3.0.42 - 2023-11-03
新增
- #6236 为
GenerateModelIDEVisitor增加unionType支持。 - #6246 #6252 增加
Crontab生命周期事件。 - #6249 为
Crontab增加closure执行类型。
优化
- #6239 优化
AMQP代码,替换一些即将废弃的方法,并增加BeforeConsume事件。 - #6250 优化
generateModelIdeVisitor注释的生成。 - #6253 当收集类反射数据失败时,输出错误信息到终端。
- #6256 优化
hyperf/translation部分代码,为成员变量增加类型限制。
v3.0.41 - 2023-10-27
新增
- #6224 为
Response::xml()等方法,增加charset参数。 - #6232 为
Hyperf\HttpServer\Router\Dispatched增加isNotFound方法。 - #6233 为
hyperf/command组件的AfterExecute事件,增加exception入参。
优化
v3.0.40 - 2023-10-20
修复
- #6217 修复
Str::replaceLast方法,在被替换内容为空时,无法正常使用的问题。
优化
v3.0.39 - 2023-10-13
新增
- #6188 为
Redis的 options 配置增加 string 类型 key 支持。 - #6193 为
Swow服务增加 HTTP 和 WebSocket 双协议端口支持。 - #6198 为
hyperf/tracer组件增加RpcAspect用以替代JsonRpcAspect。 - #6200 为
hyperf/tracer组件增加ElasticserachAspect和CoroutineAspect的开关。 - #6203 为
hyperf/tracer组件增加Hyperf\Tracer\Aspect\GrpcAspect。 - #6207 为
kafka组件增加exception_callback配置。
v3.0.38 - 2023-10-05
修复
- #6183 修复使用单测组件时,中间件权重无法正常使用的问题。
- #6185 修复使用
socketio-server时,cleanUpExpiredOnce当sids为空时,无法正常使用的问题。
优化
- #6177 使
hyperf/codec组件Base62工具类,可以更加便捷的被继承重写。
v3.0.37 - 2023-09-22
新增
- #6156 为
stringable组件增加了Str::replaceStart()等方法。
优化
- #6154 在使用验证器组件时,如果原生方法
json_validate存在,则使用其进行Json格式验证。 - #6157 在使用
trace组件时,只记录打开记录异常开关,并且不在忽略列表中的信息。
修复
- #6160 修复当设置配置
services.enable.register为false时,仍然会发布服务到服务中心的问题。 - #6162 修复使用
Crontab的时,当执行任务超过默认超时时间后,则不能很好的进行控制任务运行时机的问题。
v3.0.36 - 2023-09-15
新增
优化
- #6151 优化
hyperf/kafka组件中FailToConsume的触发时机。
修复
v3.0.35 - 2023-09-01
修复
- #6097 修复使用非
zipkin的tracer组件时,会出现报错的问题。 - #6099 修复使用
Redis时,恒定频率释放链接模式无法正常使用的问题。 - #6110 修复使用
Nacos GRPC的配置中心时,多进程模式无法正常工作的问题。
新增
- #6096 为
Crontab组件中的事件增加getThrowable方法。 - #6094 新增验证器规则
ExcludeIfFileImageFile和ProhibitedIf。 - #6112 为
Hyperf\Kafka\Producer增加sendAsync和sendBatchAsync两个新方法。
优化
- #6098 优化
hyperf/tracerkafka上报器,增加其稳定性。 - #6100 优化
hyperf/tracerHTTP上报器,增加其性能和稳定性。 - #6108 优化命令
describe:routes,展示排序后的中间件。 - #6111 为
tracer上报器,增加日志输出能力。
v3.0.34 - 2023-08-25
新增
- #6060 为
tracer组件增加request.uri标签。 - #6063 为
Request相关事件,增加服务名参数$server。 - #6070 为组件
hyperf/rpc-multilex增加php_serialize协议。 - #6069 #6075 为组件
hyperf/tracer增加kafka上报器。 - #6078 新增方法
Hyperf\Support\Composer::hasPackage()。 - #6083 #6084 支持中间件排序功能。
修复
- #6065 修复方法
Context::override和Context::getOrSet没法对指定协程 ID 使用的问题。
优化
- #6046 从协程上线文中读取
tracer实例。 - #6061 为
server配置,增加key-value模式的支持。 - #6077 当使用
#[Hyperf\Constants\Annotation\Constants]时,避免IDE触发deprecated警告。
v3.0.33 - 2023-08-18
修复
- #6011 修复
invocable控制器路由无法正常使用验证器的 BUG。 - #6013 修复
no_aspect会被覆盖的问题。 - #6053 修复方法
Arr::has时,Interger类型参数会导致报错的问题。
优化
即将废弃
- #6044 设置
Hyperf\Coroutine\Traits\Container为即将废弃。
v3.0.32 - 2023-08-09
新增
- #5996 允许
tracer切入GuzzleHttp\Client::request()方法,进行数据记录。
修复
- #6004 修复在使用
Command时,抛出异常后,命令行退出码不合规的问题。
v3.0.31 - 2023-07-27
修复
- #5969 修复使用
Str::contains时,如果$needles为[null]则会导致判断错误的问题。 - #5970 修复使用
Str::startsWith和Str::endsWith时,如果$needles为[null]则会导致判断错误的问题。
新增
- #5971 新增方法
Str::containsIgnoreCase()可以在不区分大小写的情况下,用来判断是否是包含关系。
v3.0.30 - 2023-07-21
修复
- #5947 修复使用
amqp时,存在多个配置时,协程锁失效的问题。
优化
- #5954 优化模型生成器,使其生成正确的参数注释。
新增
- #5951 为
Session的Cookies功能增加SameSite支持。 - #5955 为
Nacos服务注册与发现,增加access_key和access_secret的支持。 - #5957 新增
Hyperf\Codec\Packer\IgbinarySerializerPacker。 - #5962 当使用测试组件时,增加支持修改子协程上下文的能力。
v3.0.29 - 2023-07-14
修复
- #5921 修复
http2-client在没有开启心跳时,无法正常关闭的问题。 - #5923 修复
nacos grpc client当进程退出时,无法友好关闭的问题。 - #5922 修复使用
grpc-client时,会找不到ApplicationContext的问题。
优化
- #5924 当进程退出时,隐藏
nacos grpc client相关的正常的错误信息。
v3.0.28 - 2023-07-08
修复
- #5909 修复
ACM配置中心因client::$servers没有进行初始化而报错的问题。 - #5911 修复
Nacos Grpc 客户端权限验证失败的问题。 - #5912 修复
Nacos Grpc 客户端在Nacos 服务重启后,重连失败的问题。
新增
- #5895 为验证器规则
Integer和Boolean增加严格模式。
优化
- #5910 优化工厂类
NacosClientFactory,使其实例化NacosClient而非Nacos Application对象。
v3.0.27 - 2023-06-30
修复
优化
- #5886 当使用
hyperf/db连接clickhouse时,如果SQL执行错误,则会抛出异常。
v3.0.26 - 2023-06-24
修复
- #5861 修复缓存组件中,使用
CoroutineMemory时,CoroutineMemory::clearPrefix()无法正常工作的问题。
优化
- #5858 当调用数据库组件中
chunkById时,如果Id为Null,则抛出异常。
v3.0.25 - 2023-06-19
修复
- #5829 修复
Hyperf\Database\Model\Builder::value()当使用形如table.column的字段时,无法正常使用的问题。 - #5831 修复在特殊场景下
socket.io组件在解析namespace时,会造成死循环的问题。
v3.0.24 - 2023-06-10
修复
- #5794 修复代理类中
__FILE__和__DIR__定位错误的问题。 - #5803 修复组件
hyperf/http-server不适配新版本Psr7的问题。 - #5808 修复验证器规则
le、lte、gt、gte不会正常比较numeric和string。
优化
- #5789 支持高版本
psr/http-message。 - #5806 优化 Swow 服务,默认情况下合并通用配置。
- #5814 增加方法
build_sql,在抛出异常QueryException时,可以快速的构建SQL.
v3.0.23 - 2023-06-02
新增
修复
- #5782 修复
prometheus无法正常收集histograms的问题。
优化
- #5768 为
Hyperf\Command\Annotation\Command组件增加参数支持。 - #5780 修复
Zipkin\Propagation\Map中String类型检测错误的问题。
v3.0.22 - 2023-05-27
新增
优化
- #5741 为
Hyperf\DB\MySQLConnection增加即将过期的标签。 - #5702 优化了
Hyperf\Metric\Adapter\Prometheus\Redis的代码,使其允许被重写KEY键前缀。 - #5762 自定义进程默认使用非阻塞模式。
v3.0.21 - 2023-05-18
新增
- #5721 为
Request生命周期事件,增加exception参数。 - #5723 为
hyperf/db组件增加Swoole5.x的PgSQL支持。 - #5725 为
hyperf/db组件增加Swoole4.x的PgSQL支持。 - #5731 新增方法
Arr::hasAny()。
修复
优化
- #5718 优化了
view-engine组件的代码,并增加了一些单元测试。 - #5719 优化了
metric组件的代码,并增加了一些单元测试。 - #5720 优化了
Hyperf\Metric\Listener\OnPipeMessage的代码,来避免消息阻塞的问题。
v3.0.20 - 2023-05-12
新增
修复
优化
- #5716 为协程风格服务增加超全局变量的支持。
v3.0.19 - 2023-05-06
修复
新增
- #5680 为
rpc-multiplex增加存储RPC上下文的能力。 - #5695 为数据库迁移组件,增加设置
datetime类型的创建时间和修改时间的功能。 - #5699 增加
Model::resolveRelationUsing(),用来动态创建模型关系。
优化
- #5694 将
hyperf/utils从hyperf/rpc组件中移除。 - #5696 使用
Hyperf\Coroutine\Coroutine::sleep()替代Swoole\Coroutine::sleep()。
v3.0.18 - 2023-04-26
新增
- #5672 将部分
utils中的方法,复制到hyperf/support组件中,并增加对应的命名空间。
修复
- #5662 修复
pgsql-swoole执行失败时,无法抛出异常的问题。
优化
- #5660 将
hyperf/codec从hyperf/utils分离出来。 - #5663 将
hyperf/serializer从hyperf/utils分离出来。 - #5666 将
Packers从hyperf/utils分离到hyperf/codec中。 - #5668 将
hyperf/support从hyperf/utils分离出来。 - #5670 将
hyperf/code-parser从hyperf/utils分离出来。 - #5671 使用
Hyperf\Coroutine\Channel\Pool代替Hyperf\Utils\ChannelPool。 - #5674 将
Hyperf\Utils命名空间的类和方法,使用新组件进行替换。
v3.0.17 - 2023-04-19
修复
- #5642 修复使用批量读取模型缓存时,遇到不存在的数据时,无法初始化空缓存的问题。
- #5643 修复使用批量读取模型缓存时,空缓存无法正常使用的问题。
- #5649 修复协程风格下,无法初始化数据库字段收集器的问题。
新增
- #5634 新增助手函数
Hyperf\Stringable\str()。 - #5639 新增方法
Redis::pipeline()和Redis::transaction()。 - #5641 为模型缓存
loadCache增加嵌套初始化缓存的能力。 - #5646 增加
PriorityDefinition类,来处理容器dependencies优先级的问题。
优化
- #5634 使用
Hyperf\Stringable\Str替代Hyperf\Utils\Str。 - #5636 优化
kafka消费者,启动时等待消费过长的问题。 - #5648 将依赖
hyperf/utils从hyperf/guzzle中移除。
v3.0.16 - 2023-04-12
修复
- #5627 修复方法
Hyperf\Context\Context::destroy支持协程下调用。
优化
- #5616 将
ApplicationContext从hyperf/utils分离到hyperf/context。 - #5617 将
hyperf/guzzle从hyperf/consul依赖中移除。 - #5618 支持在 Swagger 面板中设置默认路由。
- #5619 #5620 将
hyperf/coroutine从hyperf/utils分离出来。 - #5621 使用
Hyperf\Context\ApplicationContext代替Hyperf\Utils\ApplicationContext。 - #5622 将
CoroutineProxy从hyperf/utils分离到hyperf/context。 - #5623 使用
Hyperf\Coroutine\Coroutine替代Hyperf\Utils\Coroutine。 - #5624 将
Channel相关方法从hyperf/utils分离到hyperf/coroutine。 - #5629 将
Hyperf\Utils\Arr继承Hyperf\Collection\Arr。
v3.0.15 - 2023-04-07
新增
- #5606 新增配置
server.options.send_channel_capacity用来控制使用协程风格服务时,是否使用SafeSocket来返回数据。
优化
- #5593 #5598 使用
Hyperf\Collection\Collection替代Hyperf\Utils\Collection。 - #5594 使用
Hyperf\Collection\Arr替代Hyperf\Utils\Arr。 - #5596 将
hyperf/pipeline从hyperf/utils分离出来。 - #5599 使用
Hyperf\Pipeline\Pipeline替代Hyperf\Utils\Pipeline。
v3.0.14 - 2023-04-01
修复
优化
- #5572 优化了
HTTP服务,使用WritableConnection实现,支持Swow。 - #5577 将组件
hyperf/collection从hyperf/utils分离。 - #5580 将组件
hyperf/conditionable和hyperf/tappable从hyperf/utils分离。 - #5585 优化
service-governance组件,去除了consul的依赖关系。
v3.0.13 - 2023-03-26
新增
优化
- #5544 为
grpc-server组件取消hyperf/rpc的依赖。 - #5550 优化了
Coordinator Timer和Crontab Parser的代码。 - #5566 基于模型生成
Swagger Schemas时,优化变量类型可以为Null。 - #5569 优化了
Crontab RunCommand的依赖关系。
v3.0.12 - 2023-03-20
新增
- #4112 新增配置项
kafka.default.enable用来控制消费者是否启动。 - #5533 #5535 为
kafka组件增加client和socket配置,允许开发者自定义。 - #5536 新增组件
hyperf/http2-client。 - #5538 为
hyperf/http2-client增加双向流支持。 - #5511 将
GRPC服务统一到RPC服务中,可以更加方便的进行服务注册与发现。 - #5543 增加
Nacos双向流支持,可以监听到配置中心实时更新的事件。 - #5545 为组件
hyperf/http2-client增加双向流相关的测试。 - #5546 为
Nacos配置中心增加GRPC功能,可以实时监听配置的变化。
优化
- #5539 优化了
AMQPConnection的代码,以支持最新版本的php-amqplib组件。 - #5528 优化了
aspects的配置,对热重启有更好的支持。 - #5541 提升了
FactoryResolver基于XXXFactory实例化对象的能力,增加了可选参数配置。
v3.0.11 - 2023-03-15
新增
- #5499 为
hyperf/constants组件增加枚举(>=PHP8.1)类型支持。 - #5508 新增方法
Hyperf\Rpc\Protocol::getNormalizer。 - #5509 为
json-rpc组件自动注册normalizer。 - #5513 组件
rpc-multiplex使用默认的normalizer并对rpc-server增加自定义protocol.normalizer的支持。 - #5518 增加方法
SwooleConnection::getSocket用来获取Swoole的Response。 - #5520 新增方法
Coroutine::stats()和Coroutine::exists()。 - #5525 新增配置
kafka.default.consume_timeout用来控制消费者消费数据的超时时间。 - #5526 新增方法
Hyperf\Kafka\AbstractConsumer::isEnable()用来控制kafka消费者是否启动。
修复
优化
v3.0.10 - 2023-03-11
修复
- #5497 修复
apollo配置中心,无法正常触发ConfigChanged事件的问题。
新增
- #5491 为
Str和Stringable新增charAt方法。 - #5503 新增
Hyperf\Contract\JsonDeSerializable。 - #5504 新增
Hyperf\Utils\Serializer\JsonDeNormalizer。
优化
- #5493 优化
Nacos服务注册器的代码,使其支持1.x和2.x版本。 - #5494 #5501 优化
hyperf/guzzle组件,当使用Swoole且不支持native-curl时,才会默认替换Handler。
变更
- #5492 将
Hyperf\DbConnection\Listener\CreatingListener重命名为Hyperf\DbConnection\Listener\InitUidOnCreatingListener.
v3.0.9 - 2023-03-05
新增
- #5467 为
GRPC增加Google\Rpc\Status的支持。 - #5472 为模型增加
ulid和uuid的支持。 - #5476 为
Stringable增加ArrayAccess的支持。 - #5478 为
Stringable和Str增加isMatch方法。
优化
- #5469 当数据库连接出现问题时,确保连接在归还到连接池前被重置。
v3.0.8 - 2023-02-26
修复
新增
- #5434 为
Swow增加UDP服务的支持。 - #5444 新增脚本
GenSchemaCommand用来生成Swagger Schema。 - #5451 为模型集合新增
appends($attributes)方法。 - #5453 为测试组件增加
put()和patch()方法。 - #5454 为
GRPC组件新增方法Hyperf\Grpc\Parser::statusFromResponse。 - #5459 为
Str和Stringable新增方法uuid和ulid。
优化
v3.0.7 - 2023-02-18
新增
- #5042 为
Swagger组件增加配置swagger.scan.paths可以用来重写默认的扫描目录。 - #5403 为
Swow增加Swoole Server配置项的适配。 - #5404 为
Swagger增加多端口服务的支持。 - #5406 为
Hyperf\Database\Model\Builder增加mixin方法。 - #5407 为
Swagger增加请求方法Delete和Options的支持。 - #5409 为数据库组件中
Query\Builder和Paginator类增加了一部分方法。 - #5414 为
Hyperf\Database\Model\Builder增加了clone方法。 - #5418 为配置中心增加了
ConfigChanged事件。 - #5429 在连接
Aliyun Nacos服务时,增加了配置项access_key和access_secret。
修复
- #5405 修复了当系统支持
IPv6时,get local ip无法正常读取 ip 的问题。 - #5417 修复
PgSQL无法正常使用数据库迁移功能的问题。 - #5421 修复数据库
Json结构无法正常使用boolean类型的问题。 - #5428 修复
Metric中间件遇到异常时,服务端参数统计有误的问题。 - #5424 修复数据库迁移组件,不支持
PHP8.2的问题。
优化
- #5411 优化代码,异常
WebSocketHandeShakeException应继承BadRequestHttpException。 - #5419 优化
RPN组件的实现逻辑,可以更好的进行自定义扩展。 - #5422 当安装
Swagger组件后,默认启动Swagger的能力。
v3.0.6 - 2023-02-12
修复
- #5361 修复
Nacos注入临时实例失败的问题。 - #5382 修复
SocketIO中使用mix-subscriber时,因为没有设置密码而报错的问题。 - #5386 修复
SwoolePostgresqlClient会被执行到不存在的方法exec的问题。 - #5394 修复
hyperf/config-apollo无法正常使用的问题。
新增
- #5366 为
hyperf/database增加forceDeleting事件。 - #5373 为
SwowServer增加settings配置。 - #5376 为
hyperf/metric增加协程风格下服务状态收集的能力。 - #5379 当
Nacos心跳失败时,增加日志记录。 - #5389 增加
Swagger支持。 - #5395 为
Swagger组件,增加验证器功能。 - #5397 支持所有已知的
Swagger注解。
v3.0.5 - 2023-02-06
新增
- #5338 为
SoftDeletingScope新增了addRestoreOrCreate方法。 - #5349 新增监听器
ResumeExitCoordinatorListener。 - #5355 新增方法
System::getCpuCoresNum()。
修复
- #5357 修复在匿名函数中抛错时,
coordinator定时器无法正常停止的问题。
优化
- #5342 优化了
Redis哨兵模式的地址读取方式。
v3.0.4 - 2023-01-22
修复
v3.0.3 - 2023-01-16
修复
- #5318 修复在使用 PHP 8.1 版本时,限流器无法使用的问题。
- #5324 修复 MySQL 连接断开时,数据库组件无法使用的问题。
- #5322 修复 Kafka 消费者在没有设置
memberId等参数时,无法使用的问题。 - #5327 修复 PgSQL 在创建连接失败时,导致类型错误的问题。
新增
- #5314 新增方法
Hyperf\Coordinator\Timer::stats(). - #5323 新增方法
Hyperf\Nacos\Provider\ConfigProvider::listener().
优化
- #5308 #5309 #5310 #5311 为
hyperf/metric增加协程服务的支持。 - #5315 增加
hyperf/metric组件的监控指标。 - #5326 在循环中,收集服务当前的状态。
v3.0.2 - 2023-01-09
修复
- #5305 使用
PolarDB读写分离时,修复因没有修改数据的情况下,提交事务会导致此链接存在异常,但又被回收进连接池的问题。 - #5307 修复
hyperf/metric组件中,Timer::tick()的$timeout参数设置错误的问题。
优化
- #5306 当连接池回收连接失败时,记录日志。
v3.0.1 - 2023-01-09
修复
- #5289 修复使用
Swow引擎时,Signal组件无法使用的问题。 - #5303 修复
SocketIO的Redis NSQ 适配器,当首次使用,topics为null时,无法正常工作的问题。
优化
- #5287 当服务端响应数据时,如果出现异常,则记录对应日志。
- #5292 为组件
hyperf/metric增加Swow引擎的支持。 - #5301 优化
Hyperf\Rpc\PathGenerator\PathGenerator的代码实现。
v3.0.0 - 2023-01-03
BC breaks
- 框架移除了
@Annotation的使用,全面使用PHP8的原生注解Attribute。更新框架前,请确保已经全部替换到 PHP8 的原生注解。
我们提供了脚本,可以更加方便的将 Doctrine Annotations 替换为 PHP8 Attributes。
!> Note: 以下脚本只能在框架 2.2 版本下执行
composer require hyperf/code-generator
php bin/hyperf.php code:generate -D app- 模型升级脚本
因为模型基类,增加了类型限制,所以你需要使用以下脚本,将所有模型更新到新的写法。
composer require hyperf/code-generator
php vendor/bin/regenerate-models.php $PWD/app/Model- 框架增加了很多类型限制,所以当你从
2.2升级到3.0版本时,你需要调用静态检测脚本,检查并确保其可以正常工作。
composer analysis- 框架基于
gRPC标准修改了gRPC服务的 HTTP 返回码。