摘要:的異步并行高性能網(wǎng)絡(luò)通信引擎已發(fā)布版本。此版本增加了多項(xiàng)新特性。復(fù)雜的線上項(xiàng)目使用模式,請(qǐng)求分配調(diào)度的效率更高。方便使用或類框架實(shí)現(xiàn)自己的調(diào)度器。
PHP的異步、并行、高性能網(wǎng)絡(luò)通信引擎 Swoole 已發(fā)布 1.10.0 版本。此版本增加了多項(xiàng)新特性。
自動(dòng) DNS 解析新版本的異步客戶端不再需要使用 swoole_async_dns_lookup 解析域名了,底層實(shí)現(xiàn)了自動(dòng)域名解析。Client 在執(zhí)行 connect 方法時(shí)可直接傳入域名。
$client = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_ASYNC); $client->on("connect", function(swoole_client $cli) { $cli->send("GET / HTTP/1.1 "); }); $client->on("receive", function(swoole_client $cli, $data){ echo "Receive: $data"; $cli->send(str_repeat("A", 100)." "); sleep(1); }); $client->on("error", function(swoole_client $cli){ echo "error "; }); $client->on("close", function(swoole_client $cli){ echo "Connection close "; }); //底層會(huì)自動(dòng)進(jìn)行異步域名解析 $client->connect("www.baidu.com", 9501);慢請(qǐng)求日志
新版本增加了追蹤慢請(qǐng)求功能,可記錄慢請(qǐng)求的 PHP 函數(shù)調(diào)用棧。
function test() { test_sleep(); } function test_sleep() { echo "sleep 5 "; sleep(5); } $server = new swoole_server("127.0.0.1", 9501); $server->set([ "worker_num" => 1, "task_worker_num" => 1, "trace_event_worker" => true, "request_slowlog_timeout" => 1, "request_slowlog_file" => "/tmp/trace.log", ]); $server->on("Receive", function($serv, $fd, $reactor_id, $data) { test(); $serv->send($fd, "Swoole: $data"); }); $server->start();
處理慢請(qǐng)求后,/tmp/trace.log日志中將打印一行錯(cuò)誤信息:
[08-Jan-2018 15:21:57] [worker#0] pid 26905 [0x00007f60cda22340] sleep() /home/htf/workspace/swoole/examples/server/trace.php:10 [0x00007f60cda222e0] test_sleep() /home/htf/workspace/swoole/examples/server/trace.php:4 [0x00007f60cda22280] test() /home/htf/workspace/swoole/examples/server/trace.php:28 [0x00007f60cda22190] {closure}() /home/htf/workspace/swoole/examples/server/trace.php:42 [0x00007f60cda22140] start() /home/htf/workspace/swoole/examples/server/trace.php:42新增 STREAM 模塊
新增的 stream 模塊使得 Reactor、Worker、Task 進(jìn)程之間的通信方式更靈活,最大程度地解耦。復(fù)雜的線上項(xiàng)目使用 stream 模式,請(qǐng)求分配調(diào)度的效率更高。
$serv = new swoole_server("127.0.0.1", 9501); $serv->set(array( "dispatch_mode" => 7, "worker_num" => 2, )); $serv->on("receive", function (swoole_server $serv, $fd, $threadId, $data) { var_dump($data); echo "#{$serv->worker_id}>> received length=" . strlen($data) . " "; }); $serv->start();
Reactor 和 Worker 之間通信,使用 dispatch_mode = 7 來開啟
Worker 和 Task 之間通信,使用 task_ipc_mode = 4 來開啟
增加 Event::cycle 函數(shù)用戶代碼可自定義一個(gè) EventLoop 的鉤子函數(shù),此函數(shù)會(huì)在每一輪事件循環(huán)結(jié)束時(shí)調(diào)用。方便使用 Generator + Yield 或 Promise 類 Swoole 框架實(shí)現(xiàn)自己的調(diào)度器。
SwooleTimer::tick(2000, function ($id) { var_dump($id); }); SwooleEvent::cycle(function () { echo "hello [1] "; SwooleEvent::cycle(function () { echo "hello [2] "; SwooleEvent::cycle(null); }); });其他更新內(nèi)容
更新Table::incr和Table::decr支持有符號(hào)整型
兼容PHP-7.2版本
修復(fù)Event::del函數(shù)無(wú)法移除標(biāo)準(zhǔn)輸入句柄的問題
修復(fù)Task進(jìn)程內(nèi)定時(shí)器間隔小于Client接收超時(shí)時(shí)間,引起Client::recv死鎖的問題
增加ssl_host_name配置項(xiàng),用于驗(yàn)證SSL/TLS主機(jī)合法性
使用dispatch_mode = 3時(shí),當(dāng)所有Worker為忙的狀態(tài)時(shí)打印一條錯(cuò)誤日志
增加端口迭代器,可遍歷某個(gè)監(jiān)聽端口的所有連接
修復(fù)Table在非x86平臺(tái)存在的內(nèi)存對(duì)齊問題
修復(fù)BASE模式下max_request配置無(wú)效的問題
修復(fù)WebSocket服務(wù)器在某些客戶端ping幀帶有mask數(shù)據(jù)時(shí)回包錯(cuò)誤的問題
修復(fù)HttpClient使用HEAD方法響應(yīng)內(nèi)容攜帶Content-Length導(dǎo)致卡死的問題
增加MySQL異步客戶端對(duì)JSON格式的支持
下載地址GITHUB:https://github.com/swoole/swo...
開源中國(guó):https://gitee.com/swoole/swoo...
PECL:https://pecl.php.net/package/...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/26294.html
摘要:修復(fù)添加超過萬(wàn)個(gè)以上定時(shí)器時(shí)發(fā)生崩潰的問題增加模塊,下高性能序列化庫(kù)修復(fù)監(jiān)聽端口設(shè)置無(wú)效的問題等。線程來處理網(wǎng)絡(luò)事件輪詢,讀取數(shù)據(jù)。當(dāng)?shù)娜挝帐殖晒α艘院?,由這個(gè)線程將連接成功的消息告訴進(jìn)程,再由進(jìn)程轉(zhuǎn)交給進(jìn)程。此時(shí)進(jìn)程觸發(fā)事件。 本文示例代碼詳見:https://github.com/52fhy/swoo...。 簡(jiǎn)介 Swoole是一個(gè)PHP擴(kuò)展,提供了PHP語(yǔ)言的異步多線程服務(wù)器...
摘要:年開發(fā)并發(fā)布框架現(xiàn)已停止維護(hù)。經(jīng)過一年實(shí)戰(zhàn),年月日,一周年之際正式發(fā)布版本。宇潤(rùn)部分開源項(xiàng)目我已通過碼云平臺(tái),向項(xiàng)目力所能及地捐款,聊表心意。所以,目前主打的還是單體應(yīng)用開發(fā)。協(xié)議的開發(fā),也是帶來的一大優(yōu)勢(shì)。 imi 介紹 showImg(https://segmentfault.com/img/bVbuab9?w=291&h=187); imi 是基于 PHP 協(xié)程應(yīng)用開發(fā)框架,它支...
摘要:開發(fā)負(fù)責(zé)人創(chuàng)建分支,編寫單元測(cè)試腳本,編寫代碼,實(shí)現(xiàn)提案中的所有內(nèi)容,最終發(fā)起交叉評(píng)審,檢查代碼,提出改進(jìn)意見,反饋給開發(fā)負(fù)責(zé)人,繼續(xù)完善細(xì)節(jié)。 Swoole開源項(xiàng)目從2012年開始發(fā)布第一個(gè)版本,到現(xiàn)在已經(jīng)有近7年的歷史。在這七年的時(shí)間里: 提交了8821次代碼變更 發(fā)布了287個(gè)版本 收到并解決1161次issue反饋 合并了603次pull request 共有100位開發(fā)者...
摘要:項(xiàng)新特性個(gè)中等級(jí)別以上的修復(fù)篇文檔更新云幫社區(qū)版迎來年月更新檔。研發(fā)團(tuán)隊(duì)在這一個(gè)月中新增了項(xiàng)新特性,修復(fù)了個(gè)中等級(jí)別以上的,并更新了篇維護(hù)文檔。本月版本發(fā)布支持支持,協(xié)議的性能分析,后續(xù)還會(huì)添加等協(xié)議的支持。 13 項(xiàng)新特性、18 個(gè)中等級(jí)別以上的bug修復(fù)、12篇文檔更新、云幫社區(qū)版 迎來2016年11月更新檔。 Cloudbang(云幫) 云幫是好雨科技研發(fā)的一款基于容器技術(shù)的應(yīng)用...
閱讀 3473·2023-04-25 18:52
閱讀 2485·2021-11-22 15:31
閱讀 1224·2021-10-22 09:54
閱讀 3011·2021-09-29 09:42
閱讀 607·2021-09-26 09:55
閱讀 912·2021-09-13 10:28
閱讀 1103·2019-08-30 15:56
閱讀 2110·2019-08-30 15:55