首页
下载
文档
问答社区
视频
捐赠
源代码
AI 助理
赞助商
CRMEB
Apipost
腾讯云
微擎
禅道
51Talk
商业产品
Swoole AI 智能文档翻译器
Swoole-Compiler PHP 代码加密器
CRMEB 新零售社交电商系统
登录
注册
全部
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
发表新帖
swoole websocket协程服务端 因为客户端连接数量过多崩溃
### 问题描述 websocket 携程风格的服务端 同时300多个客户端连接的时候 PHP Fatal error: Uncaught Error: Maximum function nesting level of ' 256' reached, aborting! 服务端直接崩溃 ### Swoole版本,PHP版本,以及操作系统版本信息 swoole 4.4 php7.4 Ubuntu16.04 8核16G ### 相关代码 ```php 请将代码粘贴至此处(请勿用截图) ``` 服务端代码 \Co\run(function () { $server = new \Co\Http\Server("0.0.0.0", config('swoole.websocketport')); //监听全网段地址、端口 $server->handle('/websocket', function ($request, $ws) { $ws->upgrade();//向客户端发送websocket握手信息 global $wsObjects; $objectId = spl_object_id($ws); $wsObjects[$objectId] = $ws; $cid = \Co::getCid(); echo "Client: {$cid}connect\n"; while (true) { $frame = $ws->recv(); if ($frame === '' || $frame->data == 'close' ) { $ws->close(); break; } else if ($frame === false) { echo "error : " . swoole_last_error() . "\n"; break; } else { $ws->push('1'); } } }); $server->handle('/', function ($request, $ws) { if ($request->server['request_uri'] == "/favicon.ico"){ $ws->end("not data"); } $ws->end("not data"); }); $server->start(); }); ### 你期待的结果是什么?实际看到的错误信息又是什么? 可以同时维持1万的在线连接数量
发布于3年前 · 23 次浏览 · 来自
提问
偎徕
### 问题描述 websocket 携程风格的服务端 同时300多个客户端连接的时候 PHP Fatal error: Uncaught Error: Maximum function nesting level of ' 256' reached, aborting! 服务端直接崩溃 ### Swoole版本,PHP版本,以及操作系统版本信息 swoole 4.4 php7.4 Ubuntu16.04 8核16G ### 相关代码 ```php 请将代码粘贴至此处(请勿用截图) ``` 服务端代码 \Co\run(function () { $server = new \Co\Http\Server("0.0.0.0", config('swoole.websocketport')); //监听全网段地址、端口 $server->handle('/websocket', function ($request, $ws) { $ws->upgrade();//向客户端发送websocket握手信息 global $wsObjects; $objectId = spl_object_id($ws); $wsObjects[$objectId] = $ws; $cid = \Co::getCid(); echo "Client: {$cid}connect\n"; while (true) { $frame = $ws->recv(); if ($frame === '' || $frame->data == 'close' ) { $ws->close(); break; } else if ($frame === false) { echo "error : " . swoole_last_error() . "\n"; break; } else { $ws->push('1'); } } }); $server->handle('/', function ($request, $ws) { if ($request->server['request_uri'] == "/favicon.ico"){ $ws->end("not data"); } $ws->end("not data"); }); $server->start(); }); ### 你期待的结果是什么?实际看到的错误信息又是什么? 可以同时维持1万的在线连接数量
赞
0
分享
收藏
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
评论
2020-12-27
鲁飞
是否安装了xdebug等类似扩展? 这个报错不是swoole抛出的
赞
0
回复
2020-12-28
偎徕
回复
鲁飞
谢谢您, 就是xdebug
赞
0
回复
微信公众号
热门内容
作者其它话题
- 多进程的协程websocket服务端如何获取其他进程的wsObjects
- swoole websocket协程服务端 出现过多CLOSE_WAIT
- swoole 协程内存消息
- websocket协程服务端如何和客户端如何在同一个协程里面维持连接
暂无回复的问答
- CodeGalaxy K3s 轻量集群节点之间如何实现负载均衡
- 关于openssl CURL WARNING swSSL_connect: SSL_connect(fd=69) failed. Error: error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small[1|394]
- 多个模型如何进行事务异常回退?
- websocket开启wss报错
- 协程tcp服务器如何使用多进程?recv()方法接收信息,打印出来的pid一直是同一个。没用使用到多进程啊。