AsyncTcpConnection作为客户端接收消息问题

dsqq

我现在使用AsyncTcpConnection作为客户端接收其他服务器推送过来的消息,但是发现有数据会漏掉,几分钟才会收到一条,但是接口那边测试没有问题,推送很快

// 远程websocket服务器发来消息时
    $ws_connection->onMessage = function($connection, $data){
        $data = json_decode($data,true);
        if(!empty($data['S'])){
            if($data['M'].$data['S'] == 'EF8937'){
                echo date("Y-m-d H:i:s").":推送:{$data['P']}".PHP_EOL;
            }
            $gather = new Gather();
            $gather->run('rf_addon_tf_futures_symbol','tf_futures_trade',$data);
            // echo microtime(true)-$start . PHP_EOL;
        }
    };

上面是我接收的代码,我只打印了一个产品的数据,本人对workerman不是很了解,第一次用,请各位帮帮忙……

2011 1 0
1个回答

walkor

你要先排除业务逻辑问题,把业务逻辑都去掉,只记录log试下,比如

    $ws_connection->onMessage = function($connection, $data){
        echo $data;
    };

看下接收是否正常。

  • dsqq 2020-01-06

    谢谢,我发现是我后续的操作导致的, 现在我想开一个单独处理的worker,收到消息之后交给这个worker去处理,但是我发现内存占用特别高,这个怎么处理

  • walkor 2020-01-07

    一样的操作,去掉业务逻辑,看下占用内存是否高,不高的话一点点加回业务逻辑代码,找到导致占用内存高的业务代码,然后具体分析。

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