mantener vivo el socket en php
Publicado por JOSE LEONEL (1 intervención) el 16/08/2018 23:39:53
Un saludo a todo, tengo el siguiente problema, tengo un aplicativo en el servidor que mantiene un socket abierto para recibir datos, al recibir el primer paquete del cliente este funciona bien pero ya para el segundo se bloquea. La versión de php es 5.6 y estoy corriendo la aplicación en un Centos 7.
Al revisar los puertos centos me da el siguiente mensaje ejempló: 120.1.1:656522 CLOSE_WAIT.
AGRADEZCO LA COLABORACION
Al revisar los puertos centos me da el siguiente mensaje ejempló: 120.1.1:656522 CLOSE_WAIT.
AGRADEZCO LA COLABORACION
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
date_default_timezone_set(TZ_ID);
set_time_limit(0);
$control = socket_create(AF_INET, SOCK_STREAM, getprotobyname('tcp'));
socket_bind($control, '0.0.0.0', PORT);
socket_listen($control);
socket_set_nonblock($control);
$sock = FALSE;
$msg = "";
echo "socketServer started\n";
while (TRUE) {
if ($sock == FALSE) {
$sock = @socket_accept($control);
if ($sock != FALSE) {
socket_set_nonblock($sock);
}
}
if ($sock != FALSE) {
$msg = socket_read($sock, MAX_LENGTH);
if ($msg !== FALSE && strlen($msg) != 0) {
if (!SILENT) { print "LENGTH = " . strlen($msg) . "\n" . "MSG = $msg\n"; }
if ($msg == "FIN") {
@socket_write($sock, "FIN", 3);
die("Proceso terminado correctamente");
echo "=== Proceso Terminado ===\n";
}
$result = procesarPaquete($msg);
@socket_write($sock, $result, strlen($result));
echo "*** Proceso Terminado ***\n";
}
}
}
Valora esta pregunta
0