Bootstrap\Worker::onReceive PHP Метод

onReceive() публичный Метод

接收数据
public onReceive ( swoole_server $serv, unknown $fd, unknown $from_id, unknown $data )
$serv swoole_server
$fd unknown
$from_id unknown
$data unknown
    public function onReceive(\swoole_server $serv, $fd, $from_id, $data)
    {
        $data = self::decode($data);
        $connInfo = $serv->connection_info($fd, $from_id);
        if ($connInfo['server_port'] == $this->handleWorkerPort) {
            $module = $data['module'];
            $interface = $data['interface'];
            $cost_time = $data['cost_time'];
            $success = $data['success'];
            $time = $data['time'];
            $code = $data['code'];
            $msg = str_replace("\n", "<br>", $data['msg']);
            $ip = $serv->connection_info($fd)['remote_ip'];
            // 模块接口统计
            $this->collectStatistics($module, $interface, $cost_time, $success, $ip, $code, $msg);
            // 全局统计
            $this->collectStatistics('AllData', 'Statistics', $cost_time, $success, $ip, $code, $msg);
            // 失败记录日志
            if (!$success) {
                $this->logBuffer .= date('Y-m-d H:i:s', $time) . "\t{$ip}\t{$module}::{$interface}\tcode:{$code}\tmsg:{$msg}\n";
                if (strlen($this->logBuffer) >= $this->max_log_buffer_size) {
                    $this->writeLogToDisk();
                }
            }
        } else {
            if ($connInfo['server_port'] == $this->handleProviderPort) {
                $serv->task(array($fd, $data));
            } else {
                if ($connInfo['server_port'] == $this->udpFinderport) {
                    if (empty($data)) {
                        return false;
                    }
                    // 无法解析的包
                    if (empty($data['cmd']) || $data['cmd'] != 'REPORT_IP') {
                        return false;
                    }
                    return $serv->send($fd, json_encode(array('result' => 'ok')));
                } else {
                    echo '端口错误' . PHP_EOL;
                }
            }
        }
    }