使用workerman实现了websocket服务端
业务中使用了
use Workerman\RedisQueue\Client;
在onClose内部关闭connection
$ws->onClose = function($connection)
{
$connection->close();
unset($connection);
};
但是运行 php demo.php connections时
redis链接并没有被关闭掉
请教下如何关闭它们。否则多次链接之后,redis进程越来越多了
Workerman\RedisQueue\Client
本身是复用连接的,不会建立很多连接。Workerman\RedisQueue\Client
目前不支持关闭,另外这个代码是关闭客户端ws连接,并不是关闭
Workerman\RedisQueue\Client
。unset($connection);
这句没有必要,$connection
在函数里是临时变量,出了函数作用域自然就释放了.“否则多次链接之后,redis进程越来越多了”
这个也是错误说法,多次连接不会影响进程数,进程和连接是有区别的。进程数是固定的,启动后就不会变动了。
客户端多次连接,不影响
Workerman\RedisQueue\Client
连接数,Workerman\RedisQueue\Client
会复用连接。开发过程中不用关注Workerman\RedisQueue\Client
的连接数。感谢回复,也就是说我这边其实不用关注 redis的连接数,它内部自己会复用
对
Workerman\RedisQueue\Client
一般是放在onWorkerStart进程启动时初始化的,一个进程只会执行一次。不要重复初始化就行。请教大佬,如下这样使用是否正确哦?
连接关闭的时候取消对应的订阅,不然订阅越来越多,占用内存越来越大,这种算内存泄漏
谢谢大佬提点,已经改正