php版本信息
PHP 8.1.16 (cli) (built: Feb 14 2023 18:15:27) (NTS Visual C++ 2019 x64)
Copyright (c) The PHP Group
Zend Engine v4.1.16, Copyright (c) Zend Technologies
with Zend OPcache v8.1.16, Copyright (c), by Zend Technologies
扩展
[PHP Modules]
...
event
...
客户端连接测试代码
经验:不要使用浏览器测试,浏览器限制了websocket请求连接数量为256,所以使用代码测试
<?php
require_once __DIR__ . '/../vendor/autoload.php';
use Workerman\Connection\AsyncTcpConnection;
use Workerman\Worker;
$worker = new Worker();
$worker->onWorkerStart = function($worker){
\Workerman\Timer::add(0.001,function (){
$con = new AsyncTcpConnection('ws://127.0.0.1:16120');
$con->connect();
});
};
Worker::runAll();
服务端是使用webman的gateway启动的一个端口
class Events
{
public static string $testId;
public static function onWorkerStart($worker)
{
self::$testId = microtime(true);
var_dump('onWorkerStart-workerId:' . self::$testId);
}
public static function onConnect($client_id)
{
var_dump('onConnect-workerId:' . self::$testId);
var_dump('onConnect-totalClient:' . count(Gateway::getAllClientIdList()));
}
public static function onWebSocketConnect($client_id, $data): void
{
}
public static function onMessage($client_id, $message)
{
}
public static function onClose($client_id)
{
var_dump('onClose-workerId:' . self::$testId);
var_dump('onClose-totalClient:' . count(Gateway::getAllClientIdList()));
}
}
只测试了连接,没有测试业务,启动客户端连接,服务端打印连接数量达到了6000多个就没有测试了,请问这样是否代表没有连接数量限制了?
不确定是否还有其他问题,能否用于生产业务?
windows使用经验:在使用webman时,开启多个端口监听,使用nginx代理转发请求到不同的端口,使用压测工具测试效果优秀。linux多进程能均衡业务,windows可以使用类似的方式,用nginx代理转发到开启多个端口的业务实现相同效果。websocket服务器如果能突破连接限制,也使用同样的方式,开启多个端口监听,分散业务请求,预测也能达到生产可用的效果
windows wsl docker都能有效解决问题,为什么要用这么难用的东西