问题是这样的:
在windows下,使用GatewayWorker,使用的是websocket,客户端使用浏览器模拟500个连接。
然后发现,在我的电脑上,前251个连接正常,在252个就连不上了。
跟踪代码后发现,在gateway的代码中:
$gateway->onConnect = function($connection)
{
//第252个连接,可以执行到这里。
//..........
$connection->onWebSocketConnect = function($connection , $http_header)
{
//第252个连接,这里没有执行,即没有进入到这个方法里面。
};
};
这个什么原因呢?
如果是php没有用扩展Libevent的话,就会有这个问题,安装了扩展Libevent,就不存在这个问题,估计应该是Events/Select.php中哪里有问题
Select 单个进程最多支持1024个文件句柄(包括打开的socket句柄)
Libevent则没有这个限制。
windows下,就省点心吧