v2.1.23 - 2021-07-12
v2.1.23 - 2021-07-12
优化
- #3787 优化
JSON RPC服务,优先初始化PSR Response,用于避免PSR Request初始化失败后,无法从上下文中获取Response的问题。
v2.1.22 - 2021-06-28
安全性更新
修复
- #3721 修复了验证器规则
in和not in判断有误的问题,例如规则为in:00时,0不应该被允许通过。
v2.1.21 - 2021-06-21
修复
- #3684 修复使用熔断器时,成功次数和失败次数的界限判断有误的问题。
v2.1.20 - 2021-06-07
修复
- #3667 修复形如
10-12/1,14-15/1的定时任务规则无法正常使用的问题。 - #3669 修复了没有反斜线形如
10-12的定时任务规则无法正常使用的问题。 - #3674 修复
@Task注解中,参数$workerId无法正常使用的问题。
优化
- #3663 优化
AbstractServiceClient::getNodesFromConsul()方法,排除了可能找不到端口的隐患。 - #3668 优化
Guzzle组件中CoroutineHandler代理相关的代码,增强其兼容性。
v2.1.19 - 2021-05-31
修复
- #3618 修复使用了相同路径但不同实现逻辑的路由会在命令
describe:routes中,被合并成一条的问题。 - #3625 修复
Hyperf\Di\Annotation\Scanner中无法正常使用class_map功能的问题。
新增
- #3626 为
RPC组件增加了新的路径打包器Hyperf\Rpc\PathGenerator\DotPathGenerator。
新组件孵化
- nacos-sdk 基于 Nacos Open API 实现的 SDK。
v2.1.18 - 2021-05-24
修复
- #3598 修复事务回滚时,模型累加、累减操作会导致模型缓存产生脏数据的问题。
- #3607 修复在使用协程风格的
WebSocket服务时,onOpen事件无法在事件结束后销毁协程的问题。 - #3610 修复数据库存在前缀时,
fromSub()和joinSub()无法正常使用的问题。
v2.1.17 - 2021-05-17
修复
- #3856 修复
Swow服务处理keepalive的请求时,协程无法在每个请求后结束的问题。
新增
- #3329
@Crontab注解的enable参数增加支持设置数组, 你可以通过它动态的控制定时任务是否启动。
v2.1.16 - 2021-04-26
修复
- #3510 修复
consul无法将节点强制离线的问题。 - #3513 修复
Nats因为Socket超时时间小于最大闲置时间,导致连接意外关闭的问题。 - #3520 修复
@Inject无法作用于嵌套Trait的问题。
新增
- #3514 新增方法
Hyperf\HttpServer\Request::clearStoredParsedData()。
优化
- #3517 优化
Hyperf\Di\Aop\PropertyHandlerTrait。
v2.1.15 - 2021-04-19
新增
- #3484 新增
ORM方法withMax()withMin()withSum()和withAvg().
v2.1.14 - 2021-04-12
修复
新增
- #3472 新增方法
Sender::getResponse(),可以在协程风格的WebSocket服务里,获得与fd一一对应的Response对象。
v2.1.13 - 2021-04-06
修复
- #3432 修复
SocketIO服务,定时清理失效fd的功能无法作用到其他worker进程的问题。 - #3434 修复
RPC结果不支持允许为null的类型,例如?array会被强制转化为数组。 - #3447 修复模型缓存中,因为存在表前缀,导致模型默认值无法生效的问题。
- #3450 修复注解
@Crontab无法作用于方法的问题,支持一个类中,配置多个@Crontab。
优化
- #3453 优化了类
Hyperf\Utils\Channel\Caller回收实例时的机制,防止因为实例为null时,导致无法正确回收的问题。 - #3455 优化脚本
phar:build,支持使用软连接方式加载的组件包。
v2.1.12 - 2021-03-29
修复
优化
- #3422 优化了
co-phpunit的代码。
v2.1.11 - 2021-03-22
新增
- #3376 为注解
Hyperf\DbConnection\Annotation\Transactional增加参数$connection和$attempts,用户可以按需设置事务连接和重试次数。 - #3403 新增方法
Hyperf\Testing\Client::sendRequest(),用户可以使用自己构造的ServerRequest,比如设置Cookies。
修复
- #3380 修复超全局变量,在协程上下文里没有
Request对象时,无法正常工作的问题。 - #3394 修复使用
@Inject注入的对象,会被trait中注入的对象覆盖的问题。 - #3395 修复当继承使用
@Inject注入私有变量的父类时,而导致子类实例化报错的问题。 - #3398 修复单元测试中使用
UploadedFile::isValid()时,无法正确判断结果的问题。
v2.1.10 - 2021-03-15
修复
- #3348 修复当使用
Arr::forget方法在key为integer且不存在时,执行报错的问题。 - #3351 修复
hyperf/validation组件中,FormRequest无法从协程上下文中获取到修改后的ServerRequest,从而导致验证器验证失败的问题。 - #3356 修复
hyperf/testing组件中,客户端Hyperf\Testing\Client无法模拟构造正常的UriInterface的问题。 - #3363 修复在入口文件
bin/hyperf.php中自定义的常量,无法在命令server:watch中使用的问题。 - #3365 修复当使用协程风格服务时,如果用户没有配置
pid_file,仍然会意外生成runtime/hyperf.pid文件的问题。
优化
- #3364 优化命令
phar:build,你可以在不使用php脚本的情况下执行phar文件,就像使用命令./composer.phar而非php composer.phar。 - #3367 优化使用
gen:model生成模型字段的类型注释时,尽量读取自定义转换器转换后的对象类型。
v2.1.9 - 2021-03-08
修复
新增
- #3325 为
Crontab注解增加enable参数,用于控制当前任务是否注册到定时任务中。
优化
- #3338 优化了
testing组件,使模拟请求的方法运行在独立的协程当中,避免协程变量污染。
v2.1.8 - 2021-03-01
修复
- #3301 修复
hyperf/cache组件,当没有在注解中设置超时时间时,会将超时时间强制转化为 0,导致缓存不失效的问题。
新增
- #3310 新增方法
Blueprint::comment(),可以允许在使用Migration的时候,设置表注释。 - #3311 新增方法
RouteCollector::getRouteParser,可以方便的从RouteCollector中获取到RouteParser对象。 - #3316 允许用户在
hyperf/db组件中,注册自定义数据库适配器。
优化
新组件孵化
- rpc-multiplex 基于 Channel 实现的多路复用 RPC 组件。
- db-pgsql 适配于
hyperf/db的PgSQL适配器。
v2.1.7 - 2021-02-22
修复
- #3272 修复使用
doctrine/dbal修改数据库字段名报错的问题。
新增
- #3261 新增方法
Pipeline::handleCarry,可以方便处理返回值。 - #3267 新增
Hyperf\Utils\Reflection\ClassInvoker,用于执行非公共方法和读取非公共变量。 - #3268 为
kafka消费者新增订阅多个主题的能力。 - #3193 #3296 为
phar:build新增选项-M,可以用来映射外部的文件或目录到Phar包中。
变更
v2.1.6 - 2021-02-08
修复
- #3233 修复
AMQP组件,因连接服务端失败,导致连接池耗尽的问题。 - #3245 修复
hyperf/kafka组件设置autoCommit为false无效的问题。 - #3255 修复
Nsq消费者进程,无法触发defer方法的问题。
优化
- #3249 优化
hyperf/kafka组件,可以重用连接进行消息发布。
移除
- #3235 移除
hyperf/kafka组件rebalance检查,因为底层库longlang/phpkafka增加了对应的检查。
v2.1.5 - 2021-02-01
修复
- #3204 修复在
hyperf/rpc-server组件中,中间件会被意外替换的问题。 - #3209 修复
hyperf/amqp组件在使用协程风格服务,且因超时意外报错时,没有办法正常回收到连接池的问题。 - #3222 修复
hyperf/database组件中JOIN查询会导致内存泄露的问题。 - #3228 修复
hyperf/tracer组件中,在defer中调用flush失败时,会导致进程异常退出的问题。 - #3230 修复
hyperf/scout组件中orderBy方法无效的问题。
新增
- #3211 为
hyperf/nacos组件添加了新的配置项url,用于访问Nacos服务。 - #3214 新增类
Hyperf\Utils\Channel\Caller,可以允许用户使用协程安全的连接,避免连接被多个协程绑定,导致报错的问题。 - #3224 新增方法
Hyperf\Utils\CodeGen\Package::getPrettyVersion(),允许用户获取组件的版本。
变更
- #3218 默认为
AMQP配置QOS参数,prefetch_count为1,global为false,prefetch_size为0。 - #3224 为组件
jean85/pretty-package-versions升级版本到^1.2|^2.0, 支持Composer 2.x。
如果使用 composer 2.x,则需要安装 jean85/pretty-package-versions 的 ^2.0 版本,反之安装 ^1.2 版本
优化
- #3226 优化
hyperf/database组件,使用group by或having时执行子查询获得总数。
v2.1.4 - 2021-01-25
修复
- #3165 修复方法
Hyperf\Database\Schema\MySqlBuilder::getColumnListing在MySQL 8.0版本中无法正常使用的问题。 - #3174 修复
hyperf/database组件中where语句因为不严谨的代码编写,导致被绑定参数会被恶意替换的问题。 - #3179 修复
json-rpc客户端因对端服务重启,导致接收数据一直异常的问题。 - #3189 修复
kafka在集群模式下无法正常使用的问题。 - #3191 修复
json-rpc客户端因对端服务重启,导致连接池中的连接全部失效,新的请求进来时,首次使用皆会报错的问题。
新增
- #3170 为
hyperf/watcher组件新增了更加友好的驱动器FindNewerDriver,支持MacLinux和Docker。 - #3195 为
JsonRpcPoolTransporter新增了重试机制, 当连接、发包、收包失败时,默认重试 2 次,收包超时不进行重试。
优化
- #3169 优化了
ErrorExceptionHandler中与set_error_handler相关的入参代码, 解决静态检测因入参不匹配导致报错的问题。 - #3191 优化了
hyperf/json-rpc组件, 当连接中断后,会先尝试重连。
变更
- #3174 严格检查
hyperf/database组件中where语句绑定参数。
新组件孵化
v2.1.3 - 2021-01-18
修复
- #3070 修复
tracer组件无法正常使用的问题。 - #3106 修复协程从已被销毁的协程中复制协程上下文时导致报错的问题。
- #3108 修复使用
describe:routes命令时,相同callback不同路由组的路由会被替换覆盖的问题。 - #3118 修复
migrations配置名位置错误的问题。 - #3126 修复
Swoole扩展v4.6版本中,SWOOLE_HOOK_SOCKETS与jaeger冲突的问题。 - #3137 修复
database组件,当没有主动设置PDO::ATTR_PERSISTENT为true时,导致的类型错误。 - #3141 修复使用
Migration时,doctrine/dbal无法正常工作的问题。
新增
v2.1.2 - 2021-01-11
修复
- #3050 修复在
increment()后使用save()时,导致extra数据被保存两次的问题。 - #3082 修复
hyperf/db组件在defer中使用时,会导致连接被其他协程绑定的问题。 - #3084 修复
phar打包后getRealPath无法正常工作的问题。 - #3087 修复使用
AOP时,pipeline导致内存泄露的问题。 - #3095 修复
hyperf/scout组件中,ElasticsearchEngine::getTotalCount()无法兼容Elasticsearch 7.0版本的问题。
新增
优化
- #3046 打包
phar时,优化了重写scan_cacheable的代码。
变更
- #3077 因组件
league/flysystem的2.0版本无法兼容,故降级到^1.0。
v2.1.1 - 2021-01-04
修复
- #3045 修复
database组件,当没有主动设置PDO::ATTR_PERSISTENT为true时,导致的类型错误。 - #3047 修复
socketio-server组件,为sid续约时报错的问题。 - #3062 修复
grpc-server组件,入参无法被正确解析的问题。
新增
- #3052 为
metric组件,新增了收集命令行指标的功能。 - #3054 为
socketio-server组件,新增了Engine::close协议支持,并在调用方法getRequest失败时,抛出连接已被关闭的异常。
v2.1.0 - 2020-12-28
依赖升级
- 升级
php版本到>=7.3。 - 升级组件
phpunit/phpunit版本到^9.0。 - 升级组件
guzzlehttp/guzzle版本到^6.0|^7.0。 - 升级组件
vlucas/phpdotenv版本到^5.0。 - 升级组件
endclothing/prometheus_client_php版本到^1.0。 - 升级组件
twig/twig版本到^3.0。 - 升级组件
jcchavezs/zipkin-opentracing版本到^0.2.0。 - 升级组件
doctrine/dbal版本到^3.0。 - 升级组件
league/flysystem版本到^1.0|^2.0。
移除
- 移除
Hyperf\Amqp\Builder已弃用的成员变量$name。 - 移除
Hyperf\Amqp\Message\ConsumerMessageInterface已弃用的方法consume()。 - 移除
Hyperf\AsyncQueue\Driver\Driver已弃用的成员变量$running。 - 移除
Hyperf\HttpServer\CoreMiddleware已弃用的方法parseParameters()。 - 移除
Hyperf\Utils\Coordinator\Constants已弃用的常量ON_WORKER_START和ON_WORKER_EXIT。 - 移除
Hyperf\Utils\Coordinator已弃用的方法get()。 - 移除配置文件
rate-limit.php, 请使用rate_limit.php。 - 移除无用的类
Hyperf\Resource\Response\ResponseEmitter。 - 将组件
hyperf/paginator从hyperf/database依赖中移除。 - 移除
Hyperf\Utils\Coroutine\Concurrent中的方法stats()。
变更
-
方法
Hyperf\Utils\Coroutine::parentId返回父协程的协程 ID- 如果在主协程中,则会返回 0。
- 如果在非协程环境中使用,则会抛出
RunningInNonCoroutineException异常。 - 如果协程环境已被销毁,则会抛出
CoroutineDestroyedException异常。
-
类
Hyperf\Guzzle\CoroutineHandler- 删除了
execute()方法。 - 方法
initHeaders()将会返回初始化好的 Header 列表, 而不是直接将$headers赋值到客户端中。 - 删除了
checkStatusCode()方法。
- 删除了
-
#2720 不再在方法
PDOStatement::bindValue()中设置data_type,已避免字符串索引中使用整形时,导致索引无法被命中的问题。 -
#2871 从
StreamInterface中获取数据时,使用(string) $body而不是$body->getContents(),因为方法getContents()只会返回剩余的数据,而非全部数据。 -
#2909 允许设置重复的中间件。
-
#2935 修改了
Exception Formatter的默认规则。 -
#2979 命令行
gen:model不再自动将decimal格式转化为float。
即将废弃
- 类
Hyperf\AsyncQueue\Signal\DriverStopHandler将会在v2.2版本中弃用, 请使用Hyperf\Process\Handler\ProcessStopHandler代替。 - 类
Hyperf\Server\SwooleEvent将会在v3.0版本中弃用, 请使用Hyperf\Server\Event代替。
新增
- #2659 #2663 新增了 Swow 驱动支持。
- #2671 新增监听器
Hyperf\AsyncQueue\Listener\QueueHandleListener,用来记录异步队列的运行日志。 - #2923 新增类
Hyperf\Utils\Waiter,可以用来等待一个协程结束。 - #3001 新增方法
Hyperf\Database\Model\Collection::columns(),类似于array_column。 - #3002 为
Json::decode和Json::encode新增参数$depth和$flags。
修复
- #2741 修复自定义进程无法在
Swow驱动下使用的问题。
优化
- #3009 优化了
prometheus,使其支持https和http协议。