Swoft 2.0.7 如期而至
阿新 • • 發佈:2020-06-24
什麼是 Swoft ?
Swoft 是一款基於 Swoole 擴充套件實現的 PHP 微服務協程框架。Swoft 能像 Go 一樣,內建協程網路伺服器及常用的協程客戶端且常駐記憶體,不依賴傳統的 PHP-FPM。有類似 Go 語言的協程操作方式,有類似 Spring Cloud 框架靈活的註解、強大的全域性依賴注入容器、完善的服務治理、靈活強大的 AOP、標準的 PSR 規範實現等等。
Swoft 通過長達三年的積累和方向的探索,把 Swoft 打造成 PHP 界的 Spring Cloud,它是 PHP 高效能框架和微服務治理的最佳選擇。
Github
Swoft v2.0.7
2.0.7
在 2.0.6
上繼續揚帆,已在大量的生產業務中使用,得到很多使用者的肯定和支援。正式版本我們做了許多改進和優化,擁有了更好的效能。
- 新增 Http Session 功能元件,提供http會話管理,支援多種儲存驅動
- 增強 TCP server 請求支援新增全域性或對應的方法中介軟體
- 增強 Websocket server 訊息請求支援新增全域性或對應的方法中介軟體
Http Session
通過 Composer 安裝 swoft/session 元件
- 在專案 composer.json 所在目錄執行
composer require swoft/session
- 將
Swoft\Http\Session\SessionMiddleware
中介軟體加入到全域性中介軟體
在配置檔案 app/bean.php
裡:
'httpDispatcher' => [
// Add global http middleware
'middlewares' => [
\Swoft\Http\Session\SessionMiddleware::class,],複製程式碼
預設是基於本地檔案驅動,儲存在
runtime/sessions
目錄
更在驅動只需要配置對應 handler
Redis
驅動:
'sessionHandler' => [
'class' => RedisHandler::class,// Config redis pool
'redis' => bean('redis.pool')
],複製程式碼
Websocket訊息中介軟體
- 全域性中介軟體
配置於 app/bean.php
:
/** @see \Swoft\WebSocket\Server\WsMessageDispatcher */
'wsMsgDispatcher' => [
'middlewares' => [
\App\WebSocket\Middleware\GlobalWsMiddleware::class
],複製程式碼
- 作用於控制器的
/**
* Class HomeController
*
* @WsController(middlewares={DemoMiddleware::class})
*/
class TestController
{}
複製程式碼
TCP 請求中介軟體
- 全域性中介軟體
配置於 app/bean.php
:
/** @see \Swoft\Tcp\Server\TcpDispatcher */
'tcpDispatcher' => [
'middlewares' => [
\App\Tcp\Middleware\GlobalTcpMiddleware::class
],複製程式碼
- 作用於控制器的
/**
* Class DemoController
*
* @TcpController(middlewares={DemoMiddleware::class})
*/
class DemoController
{
// ....
}
複製程式碼
Github
更新記錄
升級提示:
-
Swoole\WebSocket\Server::push
第四個引數$finish
在 swoole4.4.12
後改為了 int 型別。 - tcp server 的
TcpServerEvent::CONNECT
事件引數保持跟receive,close一致。$fd,$server
互換位置。
修復(Fixed):
- 修復 config 注入時,沒有找到值也會使用對應型別的預設值覆蓋屬性,導致屬性預設值被覆蓋 d84d50a7
- 修復 ws server 中使用message排程時,沒有過濾空資料,導致多發出一個響應。避免方法swoft-cloud/swoft#1002 d84d50a7
- 修復 tcp server 中使用message排程時,沒有過濾空資料,導致多發出一個響應。07a01ba1
- 修復 獨立使用console元件時缺少 swoft/stdlib 庫依賴 c569c81a
- 修復
ArrayHelper::get
傳入key為 integer 時,報引數錯誤 a44dcad - 修復 console 渲染使用table,有int值時,計算寬度報型別錯誤 74a835ab
- 修復 error 元件中使用者無法自定義設定預設的錯誤處理級別 4c78aeb
- 修復 啟用和禁用 元件設定
isEnable()
不生效的問題 da8c51e56 - 修復 在 cygwin 環境使用
uniqid()
方法必須將第二個引數設定為 true c7f688f - 修復 在 cygwin 環境不能夠設定程式title而導致報錯 c466f6a
- 修復 使用 http
response->delCookie()
無法刪除瀏覽器的cookie資料問題 8eb9241 - 修復 ws server訊息排程時,接收到的ext資料不一定是陣列導致報錯 ff45b35
- 修復 日誌檔案按時間拆分問題c195413
- 修復 日誌
JSON
格式小問題a3fc6b9 - 修復
rpc
服務提供者getList
呼叫兩次問題fd03e71 - 修復
redis cluster
不支援auth
引數7a678f - 修復 模型查詢
json
型別,不支援array
6023a9 - 修復 redis
multi
操作沒有及時是否連線 e5f698 - 修復 redis 不支援
expireAt
,geoRadius
749241 - 修復
crontab
時間戳檢測偏差問題 eb08a46
更新(Update):
- 更新 console 在渲染 help資訊之前也會發出事件
ConsoleEvent::SHOW_HELP_BEFORE
d3f7bc3 - 簡化和統一 http,ws,tcp,rpc server管理命令邏輯 f202c826
- 更新 ws 和 tcp Connection類新增
newFromArray
和toArray
方法,方便通過第三方儲存(redis
)時匯出資訊和恢復連線 a8b0b7c - 優化 server 新增統一的 swoole pipe message 事件處理,在 ws,tcp 中使用swoft事件來處理程式間訊息 1c51a8c
增強(Enhancement):