歡迎您光臨本站 註冊首頁

Swoft 2.0.7 如期而至

←手機掃碼閱讀     admin @ 2019-11-20 , reply:0

什麼是 Swoft ?

Swoft 是一款基於 Swoole 擴展實現的 PHP 微服務協程框架。Swoft 能像 Go 一樣,內置協程網路伺服器及常用的協程客戶端且常駐內存,不依賴傳統的 PHP-FPM。有類似 Go 語言的協程操作方式,有類似 Spring Cloud 框架靈活的註解、強大的全局依賴注入容器、完善的服務治理、靈活強大的 AOP、標準的 PSR 規範實現等等。

Swoft 通過長達三年的積累和方向的探索,把 Swoft 打造成 PHP 界的 Spring Cloud, 它是 PHP 高性能框架和微服務治理的最佳選擇。

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
{
    // ....
}

更多

更新記錄

升級提示:

  • Swoole\WebSocket\Server::push 第四個參數 $finish 在 swoole 4.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 不支持 expireAtgeoRadius 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)

  • 現在 tcp 請求支持添加全局或對應的方法中間件,流程和使用跟http中間件類似。僅當使用系統調度時有用 6b593877
  • 現在 websocket message 請求支持添加全局或對應的方法中間件,流程和使用跟http中間件類似。僅當使用系統調度時有用 9739815
  • 事件管理允許設置 destroyAfterFire 在每次事件調度后清理事件中攜帶的數據 50bf43d3
  • 資料庫錯誤異常新增 code 返回fd306f4
  • 協程文件操作 writeFile 新增寫失敗異常08c4244
  • RPC 新增參數驗證8646fc5

[admin ]

來源:OsChina
連結:https://www.oschina.net/news/111474/swoft-2-0-7-released
Swoft 2.0.7 如期而至已經有234次圍觀

http://coctec.com/news/all/show-post-220038.html