Zócalo PHP Bucle de escucha

Con el siguiente código, puedo recibir 1 solicitud y escribirla:

function listen() { // Set time limit to indefinite execution set_time_limit (0); // Set the ip and port we will listen on $address = 'XX.XX.XX.XXX'; $port = XXXX; // Create a TCP Stream socket $sock = socket_create(AF_INET, SOCK_STREAM, 0); // Bind the socket to an address/port $bind = socket_bind($sock, $address, $port); // Start listening for connections socket_listen($sock); /* Accept incoming requests and handle them as child processes */ $client = socket_accept($sock); // Read the input from the client – 1024 bytes $input = socket_read($client, 2024); // Strip all white spaces from input echo $input; // Close the master sockets $close = socket_close($sock); var_dump($close); } listen(); 

Pero se cierra automáticamente escuchando una vez que recibió 1 paquete. Necesito seguir recibiendo paquetes hasta que se reciba una salida o un comando de cierre.

¿Cómo debo cambiar el código anterior para hacer que esta función se convierta en un bucle?

 set_time_limit (0); $address = '46.49.41.188'; $port = 7777; $con = 1; $word = ""; $sock = socket_create(AF_INET, SOCK_STREAM, 0); $bind = socket_bind($sock, $address, $port); socket_listen($sock); while ($con == 1) { $client = socket_accept($sock); $input = socket_read($client, 2024); if ($input == 'exit') { $close = socket_close($sock); $con = 0; } if($con == 1) { $word .= $input; } } echo $word; 

Si la solicitud será de salida, la escucha se cerrará. Ese método fue probado 🙂 y funciona.

Qué tal si:

 function listen(){ // Set the ip and port we will listen on $address = 'XX.XX.XX.XXX'; $port = XXXX; // Create a TCP Stream socket $sock = socket_create(AF_INET, SOCK_STREAM, 0); // Bind the socket to an address/port $bind = socket_bind($sock, $address, $port); // Start listening for connections socket_listen($sock); /* Accept incoming requests and handle them as child processes */ $client = socket_accept($sock); // Read the input from the client – 1024 bytes $input = socket_read($client, 2024); // Strip all white spaces from input echo $input; // Close the master sockets $close = socket_close($sock); var_dump($close); listen(); } set_time_limit (0); listen();