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;
}
}
}
}