mirror of
https://gitee.com/hyperf/hyperf.git
synced 2024-12-02 03:37:44 +08:00
88cf34b2e8
Co-authored-by: 李铭昕 <715557344@qq.com>
23 KiB
23 KiB
版本更新記錄
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
修復
- #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
方法在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
,支援Mac
Linux
和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
協議。