AsyncTcpConnection 可以在onWorkerStart 初始化New多个吗

zhouaini528

$task = new Worker();
// 进程启动时异步建立一个到www.baidu.com连接对象,并发送数据获取数据
$task->onWorkerStart = function($task)
{
$con1 = new AsyncTcpConnection('tcp://www.baidu.com:443');
$con2 = new AsyncTcpConnection('tcp://www.baidu.com:443');
}

我想动态创建异步连接。这种方式行吗?我自己试过了感觉不行

2715 1 0
1个回答

walkor

异步http用 workerman/http-client,参考手册 http://doc.workerman.net/components/workerman-http-client.html

  • zhouaini528 2020-09-29

    谢谢大佬的回复。我的需求主要是ws请求,所以代码里贴的是http。我的需求场景是有N多个ws需要连接,由于ws服务提供方,是一个连接一个订阅。采用多进程的方式~我的连接多少个又不确定,我又想动态创建。所以一直找不到好的方法才想到了如此。 如能给我提供思路感激不尽!

  • zhouaini528 2020-09-29

    我是按照这个用例http://doc.workerman.net/faq/as-wss-client.html 来做ws client端的,那么就是一个work一个连接,加上有master child就2个进程。 如果我ws连接多,进程太多了。所以想在一个进程里 连接多个WS

  • walkor 2020-09-29

    一个进程创建多个连接没问题,代码就像你写的那样,协议用ws。

  • zhouaini528 2020-09-29

    非常谢谢,结果是我的代码问题。 忘记了$con2->connect()连接了。

  • zhouaini528 2020-09-29

    @1:对了 我想再问问这个一个进程异步能支持多少的连接。有没有峰值?或者我连接多把该进程的内存使用调高点??

  • walkor 2020-09-29

    一个进程维持上万个连接,前提是安装了event扩展,并按照手册优化了linux内核。
    连接数多的话需要调高php.ini 中memory_limit,比如256M或者更多。

  • zhouaini528 2020-09-29

    @1:十分感谢。

年代过于久远,无法发表回答
🔝