首页
下载
文档
社区
视频
捐赠
源代码
赞助商
AOT 编译器
AI 助理
商业产品
PHP AOT 原生编译器
Swoole-Compiler 代码加密器
CRMEB 新零售社交电商系统
登录
注册
全部
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
发表新帖
我想问下磁盘的IO影响异步SOCKET通信的速度吗?
### 问题描述 比如磁盘写入频率很高。而且基本读写很多。导致磁盘IO有延时1秒甚至更长。那么这个会影响我服务器和外部服务器异步通信的速度吗?? ### Swoole版本,PHP版本,以及操作系统版本信息 ### 相关代码 ```php 请将代码粘贴至此处(请勿用截图) ``` ### 你期待的结果是什么?实际看到的错误信息又是什么?
发布于5年前 · 19 次浏览 · 来自
提问
s
stonery
### 问题描述 比如磁盘写入频率很高。而且基本读写很多。导致磁盘IO有延时1秒甚至更长。那么这个会影响我服务器和外部服务器异步通信的速度吗?? ### Swoole版本,PHP版本,以及操作系统版本信息 ### 相关代码 ```php 请将代码粘贴至此处(请勿用截图) ``` ### 你期待的结果是什么?实际看到的错误信息又是什么?
赞
0
收藏
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
登录
后参与评论
评论
2021-08-24
Rango
磁盘 IO 不影响网络 IO,你可以使用 strace 命令跟踪一下程序的执行,是否存在 IO 阻塞
赞
1
回复
2021-08-25
北京大丸子
回复
Rango
如果不是io的原因,我上面的例子还能有哪些手段进行分析排错? 客户端并不是掉线,而是严重的滞后和丢包 谢谢了先
赞
0
回复
2021-08-22
北京大丸子
我也有楼主类似的情况,我是做了一个小的会议直播系统,swoole做服务器,在局域网测试,然后增加一个共享桌面(用于演示ppt),但发现第二个连接上来的客户端,接受报文非常慢,倒不是不接收,也没有报错,而是很慢。是swoole存储转发的原因吗?(我是在局域网测试的)
赞
0
回复
2021-08-25
北京大丸子
我的swoole版本Version => 4.6.7 现象就是上面说的,播放端把捕捉的桌面以图片base64的格式发送给swoole,然后swoole推送给【收看端】,但收看端接收严重丢包,画面还有,但非常滞后,另外就是swoole服务器网络被严重占用,在centos中打开个浏览器基本出不来网页。 请帮忙指点一下。 【swoole服务器端代码】: ```php <?php //创建WebSocket Server对象,监听0.0.0.0:9502端口 $ws = new Swoole\WebSocket\Server('0.0.0.0', 9502); //监听WebSocket连接打开事件 $ws->on('open', function ($ws, $request) { $fd[] = $request->fd; $GLOBALS['fd'][] = $fd; $ws->push($request->fd, $request->fd.":现在在线人数".$count."\n"); echo( $request->fd."|||||".$count); }); //监听WebSocket消息事件 $ws->on('message', function ($ws, $frame) { $msg = "{$frame->data}\n"; if(is_array($GLOBALS['fd']) && !empty($GLOBALS['fd'])){ foreach($GLOBALS['fd'] as $aa){ foreach($aa as $i){ $ws->push($i,$msg); echo($msg); } } } }); //监听WebSocket连接关闭事件 $ws->on('close', function ($ws, $fd) { echo "client-{$fd} is closed\n"; }); $ws->start(); ``` 【播放端--捕获桌面的主要代码(vue)】: ```javascript async startCapture() { if (!this.socket) { var ws = new WebSocket("ws://10.138.68.36:9502"); console.log(ws, "播放端链接swoole.socket成功"); this.video = document.getElementById("video"); this.socket = ws; const displayMediaOptions = { video: true, audio: false, }; try { //console.log(this.video.srcObject, "dasfasdf"); this.video.srcObject = await navigator.mediaDevices.getDisplayMedia( displayMediaOptions ); // console.log(this.video.srcObject, "dasfasdf"); } catch (error) { console.log(error); } this.socket.onmessage = this.draw(); this.socket.onclose = function () { console.log("WebSocket连接关闭"); this.socket = null; }; } }, //************************** //draw绘图canas图 //************************** draw() { var back = document.getElementById("output"); var backcontext = back.getContext("2d"); console.log(this.video, "draw里面this.video的值"); try { backcontext.drawImage(this.video, 0, 0, back.width, back.height); } catch (e) { if (e.name == "NS_ERROR_NOT_AVAILABLE") { return setTimeout(this.draw, 100); } else { throw e; } } if (this.video.srcObject) { this.socket.send(back.toDataURL("image/jpeg", 1)); } this.socketid && clearTimeout(this.socketid); this.socketid = setTimeout(this.draw, 100); }, ``` 【收看端】: ```javascript shoukan() { var ws = new WebSocket("ws://10.138.68.36:9502"); var image = document.getElementById("receiver"); ws.onopen = function () {}; ws.onmessage = function (data) { image.src = data.data; }; }, ```
赞
0
回复