足球资料库数据/孙祥/nba五佳球/足球直播哪个平台好 - cctv5今日现场直播

首頁 > 知識庫 > 正文

Swoole-1.8.0版本已發布,新增多項新特性
2016-01-30 18:13:17   來源: matyhtf   評論:0 點擊:

? PHP的高性能異步網絡通信框架Swoole已發布 1 8 0 版本,此版本是一個里程碑式新版本,新增了多項新特性、多項核心功能優化以及問題修復、移除了無效的特性。更新內容如下: 客戶端 增加原生異步MySQL客戶端 增加原生異步Redis客戶端,基于Redis官方提供的hiredis庫 增加原生異步Http客戶端 增加原生異步WebSocket客戶端支持 重構底層swClie

?

PHP的高性能異步網絡通信框架Swoole已發布 1.8.0 版本,此版本是一個里程碑式新版本,新增了多項新特性、多項核心功能優化以及問題修復、移除了無效的特性。更新內容如下:

客戶端

  • 增加原生異步MySQL客戶端
  • 增加原生異步Redis客戶端,基于Redis官方提供的hiredis庫
  • 增加原生異步Http客戶端
  • 增加原生異步WebSocket客戶端支持
  • 重構底層swClient,異步TCP客戶端實現放到swoole內核中
  • 增加swoole_client->reuse屬性,SWOOLE_KEEP長連接模式下標識是否為復用的連接

服務器端

  • 重構websocket服務器代碼,底層與length_check協議復用相同的處理函數,增強穩定性
  • 增加Task進程對tick/after定時器的支持,底層基于高精度的setitimer+信號實現
  • 保存構造函數中傳入的host、port參數到swoole_server對象屬性
  • 增加多端口多協議的支持(重要更新)
  • 增加swoole_server->defer函數用于延時執行一些函數
  • 增加swoole_server->close強制切斷連接的選項,設置第二個參數會true會清空發送隊列并立即切斷連接

多端口多協議示例:

$serv = new swoole_server("0.0.0.0", 9501);$port2 = $serv->listen('127.0.0.1', 9502, SWOOLE_SOCK_TCP);$port2->set(array(    'open_length_check' => true,    'package_length_type' => 'N',    'package_length_offset' => 0,       //第N個字節是包長度的值    'package_body_offset' => 4,       //第幾個字節開始計算長度    'package_max_length' => 2000000,  //協議最大長度));$port2->on('receive',  function (swoole_server $serv, $fd, $from_id, $data)  {    echo "ServerPort2n";});$serv->on('connect', function ($serv, $fd, $from_id){    echo "[#".posix_getpid()."]tClient@[$fd:$from_id]: Connect.n";});$serv->on('receive', function (swoole_server $serv, $fd, $from_id, $data) {    echo "[#".$serv->worker_id."]tClient[$fd]: $datan";    if ($serv->send($fd, "hellon") == false)    {        echo "errorn";    }});$serv->on('close', function ($serv, $fd, $from_id) {    echo "[#".posix_getpid()."]tClient@[$fd:$from_id]: Close.n";});$serv->start();

其他

  • 增加swoole_table對key值的存儲,foreach遍歷table時可以獲取到key值
  • 更改swoole_table的key對比模式,從crc32比對改為直接進行字符串對比
  • 更新utlist.h庫到1.9.9版本

swoole_table保存Key值會增加內存占用,如table的size為100萬,KEY值存儲會增加64M內存占用

問題修復

  • 修復啟用消息隊列后發生double-free問題
  • 重構定時器,修復after、tick定時器偶然出現的core dump的問題
  • 定時器使用最小堆數據結構,插入/刪除時間復雜度為log(N)
  • 修復swoole_process::signal在PHP7下發生core dump的問題
  • 修復swoole_async_write在PHP7下發生core dump的問題

移除特性

  • 移除未支持的特性相關歷史遺留代碼,如heartbeat_ping、dispatch_key_type
  • 移除swoole_server->addtimer、swoole_server->deltimer、swoole_server->gettimer
  • 移除swoole_timer_add、swoole_timer_del
  • 移除swoole_serveronTimer事件
  • 移除task_worker_max配置及相關特性代碼
  • 移除swoole_server->handler方法

?

?

相關熱詞搜索:php swoole socket 異步 網絡通信 language 編程語言

上一篇:當 Swift 中的協議遇到泛型
下一篇:面對谷歌圍棋AI,人類最后的智力驕傲即將崩塌

分享到: 收藏