我有一个Symfony命令,该命令在debian 9计算机上使用超级用户启动时运行。它打开一个TCP侦听器套接字,以从端口上的许多设备接收消息。
工作一段时间(15至20个小时之间)后,它将停止工作并阻塞TCP端口。
该问题发生在运行PHP 7.3和Apache2的Debian 9计算机上。
这是打开TCP套接字的代码:
protected function execute(InputInterface $input, OutputInterface $output)
{
try {
$this->io = new SymfonyStyle($input, $output);
$this->logger->info('Start TCP socket: Setup websocket server for detections on port 8086...');
$now = new \DateTime();
$this->io->title('Start server ' . $now->format('d-m-Y G:i:s') . '...');
$server = socket_create_listen(8086);
socket_getsockname($server, $addr, $port);
if (!$server) {
$message = 'Start TCP socket: Ko. Could not create socket.';
$this->io->error($message);
$this->logger->critical($message);
die($message);
} else {
$message = 'Start TCP socket: Ok. TCP socket opened on: ' . $addr . ':' . $port . '.';
$this->io->success($message);
$this->logger->info($message);
while ($c = socket_accept($server)) {
socket_getpeername($c, $raddr, $rport);
$this->io->writeln("Received Connection from $raddr:$rport\n");
$data = '';
while ($bytes = socket_recv($c, $r_data, 128, MSG_WAITALL)) {
$data .= $r_data;
}
//Process data here
socket_close($c);
$message = 'Finish processing data. Total Data Received: ' . strlen($data) . PHP_EOL;
$this->io->writeln($message);
$this->logger->info($message);
}
}
fclose($server);
} catch (Exception $exception) {
$message = 'Start TCP socket: Ko. Exception catched. Error detail: ' . $exception->getMessage();
$this->logger->critical($message);
$this->io->error($message);
}
}
当套接字停止连接时,我在控制台中写入以下命令:
sudo netstat -np | grep :8086
它显示以下输出:
tcp 0 1 172.25.1.14:8086 88.0.111.77:47794 FIN_WAIT1-
如何避免此问题并尝试重新启动服务或不阻止端口?
通常,@ fyrie提供的代码效果很好。但是有时候,如果我在终端上运行以下命令:
netstat -ap | grep :8086
该端口正在侦听,但我可以看到很多客户端一直保持连接状态,并且该端口无法接收更多连接。我不确定客户端在发送数据时是否遇到问题(客户端是由第三方开发的相机)。这是之前执行命令的结果:
root@server:~# netstat -ap | grep :8086
tcp 129 0 0.0.0.0:8086 0.0.0.0:* LISTEN 5884/php7.3
tcp 252549 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:49038 ESTABLISHED -
tcp 1 0 localhost:8086 localhost:43126 CLOSE_WAIT -
tcp 1 0 localhost:8086 localhost:41882 CLOSE_WAIT -
tcp 255702 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:53158 ESTABLISHED -
tcp 264640 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:42138 ESTABLISHED -
tcp 256282 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:53159 ESTABLISHED -
tcp 254661 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:42144 ESTABLISHED -
tcp 260514 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:42129 ESTABLISHED -
tcp 257008 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:53190 ESTABLISHED -
tcp 1 0 localhost:8086 localhost:43354 CLOSE_WAIT -
tcp 1 0 localhost:8086 localhost:42784 CLOSE_WAIT -
tcp 259529 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:53169 ESTABLISHED -
tcp 1 0 localhost:8086 localhost:42102 CLOSE_WAIT -
tcp 0 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:42059 ESTABLISHED 5884/php7.3
tcp 261888 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:49037 ESTABLISHED -
tcp 255166 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:53182 ESTABLISHED -
tcp 255728 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:53175 ESTABLISHED -
tcp 253363 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:53162 ESTABLISHED -
tcp 263064 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:42145 ESTABLISHED -
tcp 1 0 localhost:8086 localhost:44878 CLOSE_WAIT -
tcp 262305 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:49045 ESTABLISHED -
tcp 1 0 localhost:8086 localhost:43458 CLOSE_WAIT -
tcp 257966 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:53160 ESTABLISHED -
tcp 1 0 localhost:8086 localhost:45306 CLOSE_WAIT -
tcp 258642 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:53166 ESTABLISHED -
tcp 261952 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:49032 ESTABLISHED -
tcp 1 0 localhost:8086 localhost:46714 CLOSE_WAIT -
tcp 261847 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:42140 ESTABLISHED -
tcp 1 0 localhost:8086 localhost:44990 CLOSE_WAIT -
tcp 255966 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:53161 ESTABLISHED -
tcp 1 0 localhost:8086 localhost:45194 CLOSE_WAIT -
tcp 259702 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:49048 ESTABLISHED -
tcp 264566 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:53188 ESTABLISHED -
tcp 264653 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:49050 ESTABLISHED -
tcp 261917 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:49039 ESTABLISHED -
tcp 1 0 localhost:8086 localhost:46444 CLOSE_WAIT -
tcp 1 0 localhost:8086 localhost:46120 CLOSE_WAIT -
tcp 260054 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:42130 ESTABLISHED -
tcp 264006 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:53157 ESTABLISHED -
tcp 261594 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:49042 ESTABLISHED -
tcp 1 0 localhost:8086 localhost:44028 CLOSE_WAIT -
tcp 1 0 localhost:8086 localhost:46572 CLOSE_WAIT -
tcp 1 0 localhost:8086 localhost:42690 CLOSE_WAIT -
tcp 1 0 localhost:8086 localhost:42996 CLOSE_WAIT -
tcp 257838 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:53168 ESTABLISHED -
tcp 258233 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:49033 ESTABLISHED -
tcp 1 0 localhost:8086 localhost:47026 CLOSE_WAIT -
tcp 1 0 localhost:8086 localhost:42344 CLOSE_WAIT -
tcp 1 0 localhost:8086 localhost:45648 CLOSE_WAIT -
tcp 1 0 localhost:8086 localhost:47144 CLOSE_WAIT -
tcp 1 0 localhost:8086 localhost:44754 CLOSE_WAIT -
tcp 263557 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:53165 ESTABLISHED -
tcp 262822 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:53192 ESTABLISHED -
tcp 257325 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:49036 ESTABLISHED -
tcp 256445 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:42128 ESTABLISHED -
tcp 1 0 localhost:8086 localhost:45754 CLOSE_WAIT -
tcp 1 0 localhost:8086 localhost:41998 CLOSE_WAIT -
tcp 1 0 localhost:8086 localhost:43226 CLOSE_WAIT -
tcp 1 0 localhost:8086 localhost:44140 CLOSE_WAIT -
tcp 256478 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:53178 ESTABLISHED -
tcp 260293 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:53191 ESTABLISHED -
tcp 263530 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:42142 ESTABLISHED -
tcp 253410 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:53183 ESTABLISHED -
tcp 1 0 localhost:8086 localhost:46226 CLOSE_WAIT -
tcp 260734 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:42143 ESTABLISHED -
tcp 1 0 localhost:8086 localhost:43682 CLOSE_WAIT -
tcp 1 0 localhost:8086 localhost:42568 CLOSE_WAIT -
tcp 1 0 localhost:8086 localhost:43906 CLOSE_WAIT -
tcp 261311 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:53181 ESTABLISHED -
tcp 260133 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:49051 ESTABLISHED -
tcp 255737 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:42141 ESTABLISHED -
tcp 262800 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:53164 ESTABLISHED -
tcp 1 0 localhost:8086 localhost:45890 CLOSE_WAIT -
tcp 1 0 localhost:8086 localhost:45412 CLOSE_WAIT -
tcp 254701 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:53179 ESTABLISHED -
tcp 1 0 localhost:8086 localhost:46338 CLOSE_WAIT -
tcp 263634 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:49049 ESTABLISHED -
tcp 1 0 localhost:8086 localhost:44270 CLOSE_WAIT -
tcp 1 0 localhost:8086 localhost:46002 CLOSE_WAIT -
tcp 261865 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:49031 ESTABLISHED -
tcp 1 0 localhost:8086 localhost:46918 CLOSE_WAIT -
tcp 263014 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:49056 ESTABLISHED -
tcp 260848 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:53184 ESTABLISHED -
tcp 258259 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:53174 ESTABLISHED -
tcp 253944 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:53185 ESTABLISHED -
tcp 263624 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:53171 ESTABLISHED -
tcp 258515 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:42131 ESTABLISHED -
tcp 1 0 localhost:8086 localhost:43582 CLOSE_WAIT -
tcp 261357 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:53156 ESTABLISHED -
tcp 1 0 localhost:8086 localhost:45524 CLOSE_WAIT -
tcp 263874 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:42137 ESTABLISHED -
tcp 256794 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:42132 ESTABLISHED -
tcp 264694 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:53167 ESTABLISHED -
tcp 263758 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:53186 ESTABLISHED -
tcp 262597 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:42133 ESTABLISHED -
tcp 259834 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:49055 ESTABLISHED -
tcp 257029 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:42139 ESTABLISHED -
tcp 1 0 localhost:8086 localhost:42450 CLOSE_WAIT -
tcp 0 1 localhost:49590 localhost:8086 SYN_SENT 11468/php
tcp 252397 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:49044 ESTABLISHED -
tcp 258041 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:42134 ESTABLISHED -
tcp 256094 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:53173 ESTABLISHED -
tcp 259581 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:49053 ESTABLISHED -
tcp 263043 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:49040 ESTABLISHED -
tcp 254773 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:49035 ESTABLISHED -
tcp 264142 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:53189 ESTABLISHED -
tcp 259931 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:49047 ESTABLISHED -
tcp 1 0 localhost:8086 localhost:42232 CLOSE_WAIT -
tcp 1 0 localhost:8086 localhost:42900 CLOSE_WAIT -
tcp 1 0 localhost:8086 localhost:44512 CLOSE_WAIT -
tcp 254872 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:53180 ESTABLISHED -
tcp 255430 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:49054 ESTABLISHED -
tcp 261974 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:49041 ESTABLISHED -
tcp 256785 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:53187 ESTABLISHED -
tcp 260811 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:53163 ESTABLISHED -
tcp 259840 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:42136 ESTABLISHED -
tcp 257809 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:42146 ESTABLISHED -
tcp 261468 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:49052 ESTABLISHED -
tcp 260353 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:53177 ESTABLISHED -
tcp 255050 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:53172 ESTABLISHED -
tcp 259158 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:53170 ESTABLISHED -
tcp 1 0 localhost:8086 localhost:44394 CLOSE_WAIT -
tcp 261154 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:49043 ESTABLISHED -
tcp 261499 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:49046 ESTABLISHED -
tcp 258328 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:53176 ESTABLISHED -
tcp 252203 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:49034 ESTABLISHED -
tcp 1 0 localhost:8086 localhost:43788 CLOSE_WAIT -
tcp 1 0 localhost:8086 localhost:44636 CLOSE_WAIT -
tcp 1 0 localhost:8086 localhost:45084 CLOSE_WAIT -
tcp 261083 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:42135 ESTABLISHED -
tcp 252424 0 cpe-172-100-100-54:8086 cpe-172-100-100-1:53193 ESTABLISHED -
谢谢。