hyperf/docs/zh-hk/changelog-v2.1.md
宣言就是Siam 88cf34b2e8
Split changelog docs. (#6211)
Co-authored-by: 李铭昕 <715557344@qq.com>
2023-10-12 22:08:55 -05:00

23 KiB
Raw Blame History

版本更新記錄

v2.1.23 - 2021-07-12

優化

  • #3787 優化 JSON RPC 服務,優先初始化 PSR Response,用於避免 PSR Request 初始化失敗後,無法從上下文中獲取 Response 的問題。

v2.1.22 - 2021-06-28

安全性更新

  • #3723 修復驗證器規則 active_url 無法正確檢查 dns 記錄,從而導致繞過驗證的問題。
  • #3724 修復可以利用 RequiredIf 規則生成用於反序列化漏洞的小工具鏈的問題。

修復

  • #3721 修復了驗證器規則 innot 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 功能的問題。

新增

  • #3626RPC 組件增加了新的路徑打包器 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

修復

  • #3465 修復協程風格下,WebSocket 服務不支持配置多個端口的問題。
  • #3467 修復協程風格下,WebSocket 服務無法正常釋放連接池的問題。

新增

  • #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

修復

  • #3423 修復 worker_num 設置為非 Integer 時,導致定時任務中 Task 策略無法正常使用的問題。
  • #3426 修復為可選參數路由設置中間件時,導致中間件被意外執行兩次的問題。

優化

  • #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 方法在 keyinteger 且不存在時,執行報錯的問題。
  • #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

修復

  • #3326 修復使用 JsonEofPacker 無法正確解包自定義 eof 數據的問題。
  • #3330 修復因其他協程修改靜態變量 $constraints,導致模型關係查詢錯誤的問題。

新增

  • #3325Crontab 註解增加 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 組件中,註冊自定義數據庫適配器。

優化

  • #3308 優化 WebSocket 服務,當找不到對應路由時,直接返回響應。
  • #3319 優化從連接池獲取連接的代碼邏輯,避免因重寫低頻組件導致報錯,使得連接被意外丟棄。

新組件孵化

  • rpc-multiplex 基於 Channel 實現的多路複用 RPC 組件。
  • db-pgsql 適配於 hyperf/dbPgSQL 適配器。

v2.1.7 - 2021-02-22

修復

  • #3272 修復使用 doctrine/dbal 修改數據庫字段名報錯的問題。

新增

  • #3261 新增方法 Pipeline::handleCarry,可以方便處理返回值。
  • #3267 新增 Hyperf\Utils\Reflection\ClassInvoker,用於執行非公共方法和讀取非公共變量。
  • #3268kafka 消費者新增訂閲多個主題的能力。
  • #3193 #3296phar:build 新增選項 -M,可以用來映射外部的文件或目錄到 Phar 包中。

變更

  • #3258 為不同的 kafka 消費者設置不同的 Client ID。
  • #3282hyperf/signal 將拼寫錯誤的 stoped 修改為 stopped

v2.1.6 - 2021-02-08

修復

  • #3233 修復 AMQP 組件,因連接服務端失敗,導致連接池耗盡的問題。
  • #3245 修復 hyperf/kafka 組件設置 autoCommitfalse 無效的問題。
  • #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 方法無效的問題。

新增

  • #3211hyperf/nacos 組件添加了新的配置項 url,用於訪問 Nacos 服務。
  • #3214 新增類 Hyperf\Utils\Channel\Caller,可以允許用户使用協程安全的連接,避免連接被多個協程綁定,導致報錯的問題。
  • #3224 新增方法 Hyperf\Utils\CodeGen\Package::getPrettyVersion(),允許用户獲取組件的版本。

變更

  • #3218 默認為 AMQP 配置 QOS 參數,prefetch_count1globalfalseprefetch_size0
  • #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 byhaving 時執行子查詢獲得總數。

v2.1.4 - 2021-01-25

修復

  • #3165 修復方法 Hyperf\Database\Schema\MySqlBuilder::getColumnListingMySQL 8.0 版本中無法正常使用的問題。
  • #3174 修復 hyperf/database 組件中 where 語句因為不嚴謹的代碼編寫,導致被綁定參數會被惡意替換的問題。
  • #3179 修復 json-rpc 客户端因對端服務重啓,導致接收數據一直異常的問題。
  • #3189 修復 kafka 在集羣模式下無法正常使用的問題。
  • #3191 修復 json-rpc 客户端因對端服務重啓,導致連接池中的連接全部失效,新的請求進來時,首次使用皆會報錯的問題。

新增

  • #3170hyperf/watcher 組件新增了更加友好的驅動器 FindNewerDriver,支持 Mac LinuxDocker
  • #3195JsonRpcPoolTransporter 新增了重試機制, 當連接、發包、收包失敗時,默認重試 2 次,收包超時不進行重試。

優化

  • #3169 優化了 ErrorExceptionHandler 中與 set_error_handler 相關的入參代碼, 解決靜態檢測因入參不匹配導致報錯的問題。
  • #3191 優化了 hyperf/json-rpc 組件, 當連接中斷後,會先嚐試重連。

變更

  • #3174 嚴格檢查 hyperf/database 組件中 where 語句綁定參數。

新組件孵化

  • DAG 輕量級有向無環圖任務編排庫。
  • RPN 逆波蘭表示法。

v2.1.3 - 2021-01-18

修復

  • #3070 修復 tracer 組件無法正常使用的問題。
  • #3106 修復協程從已被銷燬的協程中複製協程上下文時導致報錯的問題。
  • #3108 修復使用 describe:routes 命令時,相同 callback 不同路由組的路由會被替換覆蓋的問題。
  • #3118 修復 migrations 配置名位置錯誤的問題。
  • #3126 修復 Swoole 擴展 v4.6 版本中,SWOOLE_HOOK_SOCKETSjaeger 衝突的問題。
  • #3137 修復 database 組件,當沒有主動設置 PDO::ATTR_PERSISTENTtrue 時,導致的類型錯誤。
  • #3141 修復使用 Migration 時,doctrine/dbal 無法正常工作的問題。

新增

  • #3059view-engine 組件增加合併任意標籤的能力。
  • #3123view-engine 組件增加 ComponentAttributeBag::has() 方法。

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 版本的問題。

新增

  • #2847 新增 hyperf/kafka 組件。
  • #3066hyperf/db 組件新增 ConnectionInterface::run(Closure $closure) 方法。

優化

  • #3046 打包 phar 時,優化了重寫 scan_cacheable 的代碼。

變更

  • #3077 因組件 league/flysystem2.0 版本無法兼容,故降級到 ^1.0

v2.1.1 - 2021-01-04

修復

  • #3045 修復 database 組件,當沒有主動設置 PDO::ATTR_PERSISTENTtrue 時,導致的類型錯誤。
  • #3047 修復 socketio-server 組件,為 sid 續約時報錯的問題。
  • #3062 修復 grpc-server 組件,入參無法被正確解析的問題。

新增

  • #3052metric 組件,新增了收集命令行指標的功能。
  • #3054socketio-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_STARTON_WORKER_EXIT
  • 移除 Hyperf\Utils\Coordinator 已棄用的方法 get()
  • 移除配置文件 rate-limit.php, 請使用 rate_limit.php
  • 移除無用的類 Hyperf\Resource\Response\ResponseEmitter
  • 將組件 hyperf/paginatorhyperf/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,已避免字符串索引中使用整形時,導致索引無法被命中的問題。

  • #2871StreamInterface 中獲取數據時,使用 (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
  • #3002Json::decodeJson::encode 新增參數 $depth$flags

修復

  • #2741 修復自定義進程無法在 Swow 驅動下使用的問題。

優化

  • #3009 優化了 prometheus,使其支持 httpshttp 協議。