Swoole 4.5 發佈,新增多項新特性

v4.5.0,這是一個大版本更新,在 4.5 版本中移除了 4.4 版本中標記爲已廢棄的特性,大幅優化了異步 Server 消息回調函數的性能。加強了對於 PHP-FPM 互調用的支持。git

新增API

  • DTLS支持, 如今咱們能夠此來構建WebRTC應用 (#3188) (@matyhtf)
  • 內置的FastCGI客戶端, 咱們能夠經過一行代碼來代理請求到FPM或是調用FPM應用 (swoole/library#17) (@twose)
  • Co::wait, Co::waitPid (用於回收子進程) Co::waitSignal (用於等待信號) (#3158) (@twose)
  • Co::waitEvent (用於等待socket上發生的指定的事件) (#3197) (@twose)
  • Co::set(['exit_condition' => $callable]) (用於自定義程序退出的條件) (#2918) (#3012) (@twose)
  • Co::getElapsed (獲取協程運行的時間以便於分析統計或找出殭屍協程) (#3162) (@doubaokun)
  • Socket::checkLiveness (經過系統調用判斷鏈接是否活躍), Socket::peek (窺視讀緩衝區) (#3057) (@twose)
  • Socket->setProtocol(['open_fastcgi_protocol' => $bool]) (內置的FastCGI解包支持) (#3103) (@twose)
  • Server::get(Master|Manager|Worker)Pid, Server::getWorkerId (獲取異步Server單例和其信息) (#2793) (#3019) (@matyhtf)
  • Server::getWorkerStatus (獲取worker進程狀態, 返回常量SWOOLE_WORKER_BUSY, SWOOLE_WORKER_IDLE以表示忙閒狀態) (#3225) (@matyhtf)
  • Server->on('beforeReload', $callable)Server->on('afterReload', $callable) (服務重啓事件, 發生在manager進程) (#3130) (@hantaohuang)
  • Http\Server靜態文件處理器如今支持http_index_fileshttp_autoindex配置 (#3171) (@hantaohuang)
  • Http2\Client->read(float $timeout = -1)方法支持讀取流式的響應 (#3011) (#3117) (@twose)
  • Http\Request->getContent (rawContent方法的別名) (#3128) (@hantaohuang)
  • swoole_mime_type_(add|set|delete|get|exists)() (mime相關APIs, 可增刪查改內置的mime類型) (#3134) (@twose)

加強

  • 優化MasterWorker進程間的內存拷貝(極限狀況下提高了四倍性能) (#3075) (#3087) (@hantaohuang)
  • 優化WebSocket派遣邏輯 (#3076) (@matyhtf)
  • 優化WebSocket構造幀時的一次內存拷貝 (#3097) (@matyhtf)
  • 優化SSL驗證模塊 (#3226) (@matyhtf)
  • 分離SSL acceptSSL handshake, 解決慢速SSL客戶端可能會形成協程服務器假死的問題 (#3214) (@twose)
  • 支持MIPS架構 (#3196) (@ekongyun)
  • UDP客戶端如今能夠自動解析傳入的域名 (#3236) (#3239) (@huanghantao)
  • Coroutine\Http\Server增長支持了一些經常使用的選項 (#3257) (@twose)
  • 支持在WebSocket握手時設置cookie (#3270) (#3272) (@twose)
  • 支持CURLOPT_FAILONERROR (swoole/library#20) (@sy-records)
  • 支持CURLOPT_SSLCERTTYPE, CURLOPT_SSLCERT, CURLOPT_SSLKEYTYPE, CURLOPT_SSLKEY (swoole/library#22) (@sy-records)
  • 支持CURLOPT_HTTPGET (swoole/library@d730bd08) (@shiguangqi)

移除

  • 移除Runtime::enableStrictMode方法 (b45838e3) (@twose)
  • 移除Buffer類 (559a49a8) (@twose)

內核相關

  • 新的C++API: coroutine::async函數傳入lambda便可發起異步線程任務 (#3127) (@matyhtf)
  • 重構底層event-API中的整數型fdswSocket對象 (#3030) (@matyhtf)
  • 全部核心的C文件都已轉化爲C++文件 (#3030) (71f987f3) (@matyhtf)
  • 一系列代碼優化 (#3063) (#3067) (#3115) (#3135) (#3138) (#3139) (#3151) (#3168) (@hantaohuang)
  • 對於頭文件的規範化優化 (#3051) (@matyhtf)
  • 重構enable_reuse_port配置項使其更加規範 (#3192) (@matyhtf)
  • 重構Socket相關API使其更加規範 (#3193) (@matyhtf)
  • 經過緩衝區預測來減小一次沒必要要的系統調用 (3b5aa85d) (@matyhtf)
  • 移除底層的刷新定時器swServerGS::now, 直接使用時間函數獲取時間 (#3152) (@hantaohuang)
  • 優化協議配置器 (#3108) (@twose)
  • 兼容性更好的C結構初始化寫法 (#3069) (@twose)
  • bit字段統一爲uchar類型 (#3071) (@twose)
  • 支持並行測試, 速度更快 (#3215) (@twose)

修復

  • 修復enable_delay_receive開啓後onConnect沒法觸發的問題 (#3221) (#3224) (@matyhtf)
  • 全部其它的bug修復都已合併到v4.4.x分支並在更新日誌中體現, 在此再也不贅述
相關文章
相關標籤/搜索