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
擴(kuò)展
[PHP Modules]
...
event
...
客戶端連接測試代碼
經(jīng)驗:不要使用瀏覽器測試,瀏覽器限制了websocket請求連接數(shù)量為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();
服務(wù)端是使用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()));
}
}
只測試了連接,沒有測試業(yè)務(wù),啟動客戶端連接,服務(wù)端打印連接數(shù)量達(dá)到了6000多個就沒有測試了,請問這樣是否代表沒有連接數(shù)量限制了?
不確定是否還有其他問題,能否用于生產(chǎn)業(yè)務(wù)?
windows使用經(jīng)驗:在使用webman時,開啟多個端口監(jiān)聽,使用nginx代理轉(zhuǎn)發(fā)請求到不同的端口,使用壓測工具測試效果優(yōu)秀。linux多進(jìn)程能均衡業(yè)務(wù),windows可以使用類似的方式,用nginx代理轉(zhuǎn)發(fā)到開啟多個端口的業(yè)務(wù)實(shí)現(xiàn)相同效果。websocket服務(wù)器如果能突破連接限制,也使用同樣的方式,開啟多個端口監(jiān)聽,分散業(yè)務(wù)請求,預(yù)測也能達(dá)到生產(chǎn)可用的效果