PHP
官方保持一致, 再也不支持PHP7.0
(@matyhtf)Serialize
模塊, 在單獨的 ext-serialize 擴展中維護. 廢棄緣由: 因爲PHP
內核頻繁變動, 致使沒法實現穩定可用的模塊, 與php serialize
相比沒有太大差別化定位PostgreSQL
模塊,在單獨的 ext-postgresql 擴展中維護. 廢棄緣由: PostgreSQL
使用了異步回調方式實現協程調度, 不符合目前內核協程化的統一規劃。另外PostgreSQL
目前用戶量很是低, 而且缺乏必要的單元測試, 沒法保證質量Runtime::enableCoroutine
再也不會自動兼容協程內外環境, 一旦開啓, 則一切阻塞操做必須在協程內調用 (@matyhtf)因爲引入了全新的協程MySQL
客戶端驅動, 底層設計更加規範, 但有一些小的向下不兼容的變化php
fetch/nextResult
優化爲按需讀取, 會產生IO調度defer
特性時, statement
發出的的請求, 須要使用statement->recv
接收defer/fetch_mode
特性時, 若有未接收完的數據, 將沒法發起新的請求connected
屬性再也不會實時基於事件更新, 而是在IO
操做失敗後更新Buffer
模塊,廢棄緣由:可替代性強,使用率低,可用PHP
字符串、fopen("memory")
代替。Lock
模塊,廢棄緣由:在協程模式下加鎖可能存在問題,可以使用chan
實現協程版本的鎖stream_socket_pair
協程化, 建議開啓hook時, 若有單獨配置需求, 請使用SWOOLE_HOOK_STREAM_FUNCTION
常量而不是SWOOLE_HOOK_STREAM_SELECT
新增Library
, 使用純PHP
編寫內核功能而非C/C++
, 提供瞭如下功能html
PHP
模塊Coroutine\WaitGroup
(@twose)PHP
代碼實現CURL的hook, 一鍵使CURL協程化, 目前爲實驗特性, 需特別調用Runtime::enableCoroutine(SWOOLE_HOOK_CURL)
來開啓 (@matyhtf) (@Yurunsoft)PHP
代碼實現exec
/shell_exec
的協程化 (#2657) (@Yurunsoft)RuntimeHook
時, 將替換函數array_walk
, array_walk_recursive
爲swoole實現的版本, 解決原生函數不可重入的問題, 但會形成沒法遍歷object (@matyhtf) (@twose)php.ini
配置swoole.enable_preemptive_scheduler = On
開啓, 相關例子詳見preemptive_scheduler (@shiguangqi)Timer::list()
返回Timer\Iterator
, 可遍歷全部定時器, Timer\clearAll
清除全部定時器, Timer\info(int $id)
獲取定時器信息, Timer::stats()
獲取全局定時器狀態 (#2498) (@twose)Co\Socket
的兩個方法getOption
和 setOption
(9d13c29) (@matyhtf)Process\Pool
的$master_pid
屬性和 shutdown
方法 (a1d6eaa) (@matyhtf)Process\Pool
的構造方法的第四個參數, 爲true時底層將自動在onWorkerStart
回調開啓協程 (8ceb32cd) (@matyhtf)stream_socket_pair
協程化支持 (#2546) (@matyhtf)Http\Server
的static_handler_locations
設置, 能夠設定靜態文件路徑 (@matyhtf)Co\Http\Client->setBasciAuth
方法, 用於自動發送Authorization
頭 (#2542) (@hongbshi)Co\Http2\Client->ping
方法 (40041f6) (@shiguangqi)hook_flags
配置項,用於取代Runtime::enableCoroutine()
函數調用全新的協程MySQL
客戶端驅動, 底層全面協程化 (#2538) (@twose)mysql
C++
和協程的編程模式(同步阻塞寫法, 異步性能)['ssl' => true]
便可, 暫不支持證書等配置)fetch
按行讀取 (如今的fetch
爲按需讀取, 未fetch的數據不會耗費用戶內存) (#2106)nextResult
按需讀取 (同上)close
後, 客戶端持有的statements
自動轉爲不可用狀態, 避免邊界問題date
相關類型小數精度支持PDO
/mysqli
保持一致Co\Redis
兼容模式, 經過$redis->set(['compatibility_mode' => true])
開啓, 可以使得hmGet/hGetAll/zRange/zRevRange/zRangeByScore/zRevRangeByScore
等方法返回結果和phpredis
保持一致 (#2529) (@caohao-php)100K
個協程同時存在 (c69d320b) (@twose)bailout
機制 (協程內發生致命錯誤時能正確退出進程) (#2579) (@twose)Server
發生錯誤時會根據狀況展現友好的400/404/503
界面而不是沒有任何輸出 (@matyhtf) (f3f2be9d)Server
默認開啓異步安全重啓特性和超大數據發送的自動協程調度功能 (#2555) (9d4a4c47) (@matyhtf)Server
的onFinish
回調支持自動協程環境 (@twose)Http
客戶端默認開啓websocket_mask
, 再也不會出現莫名其妙連不上websocket
的問題 (c02f4f85) (@twose)Channel
的調度操做 (519b6043) (@twose)WebSocket
握手失敗時切斷鏈接 (#2510) (@twose)Linux
下父進程異常退出時底層會自動發送信號殺死子進程 (4b833a3d) (@matyhtf)Socket->recv
的數據長度不足時回收末尾無用的內存 (642a3552) (@twose)Server->bind
在uid
超過UINT32_MAX
時會產生警告並返回PHP7.4
(#2506) (@twose)Process\Pool
的getProcess
問題 (#2522) (@matyhtf)fork
後產生的內存泄漏 (8f3abee7) (@twose)enable_coroutine
和task_enable_coroutine
一開一關的問題 (#2585) (@matyhtf)Co\Http\Client->setCookies
在特殊狀況下的內存錯誤 (#2644) (@Yurunsoft)arginfo_swoole_process_pool_getProcess
(#2658) (@mabu233)static_handler
不支持軟連接 (@matyhtf)OSX
下卡死 (22504dd4) (@matyhtf)SSL
後task
進程使用Server->getClientInfo
出錯 (#2639) (@matyhtf)Swoole\Coroutine\Scheduler
調度器類做爲cli
命令行腳本的入口,取代go() + Swoole\Event::wait()
的方式Swoole\Coroutine\Run
函數,提供對Swoole\Coroutine\Scheduler
的封裝go() + Swoole\Event::wait()
的運行方式可能被廢除Windows
支持計劃System
或Scheduler
模塊, 廢除util模塊Co\Http2\Client
底層協程化 (f64874c3) (@matyhtf)5.0
新增的Co\Server
和Co\Http\Server
CURL Hook
(暫時不支持curl_multi
)