PHP - mantener vivo el socket en php

 
Vista:

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





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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 1.071
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

mantener vivo el socket en php

Publicado por Yamil Bracho (888 intervenciones) el 17/08/2018 00:06:14
Prueba subiendo el timeout de tu socket programaticamente o en el htaccess

En tu aplicacion lo puedes hacer en ini_set("default_socket_timeout", 6000);

En el htacess
php_value default_socket_timeout 6000
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar