Según tengo entendido, es posible crear una red nonblockingsocket en PHP 5.x.Enchufes no bloqueantes: ¿están en cola los mensajes?
Pero, ¿qué ocurre si un script envía varios mensajes largos usando el mismo socket sin bloqueo de la siguiente manera:
socket_write($socket, $string1, $length);
socket_write($socket, $string2, $length);
socket_write($socket, $string3, $length);
socket_write($socket, $string4, $length);
Son estos mensajes en cola (? En el lado emisor/receptor) o es posible que el receptor recibe partes de mensajes diferentes porque enviaron "paralelo"?
Por ejemplo: ¿Es posible que el receptor recibe 10 bytes de $ cadena1, después 30 bytes de $ cadena2, y luego otros 25 bytes de $ cadena1 ... y así sucesivamente ....
+1 También vea http://stackoverflow.com/questions/1432477/can-php-asynchronously-use-sockets – msanford
Eso significa para mi ejemplo anterior: los sockets TCP garantizarán que el receptor nunca verá los datos de $ string2 , 3 o 4 hasta $ string1 se recibió por completo? – Mike
Sí, pero tenga en cuenta que todos los datos están escritos en el mismo socket, por lo que el receptor verá los datos como una única fuente de información. A menos que agregue longitudes de cadena, delimitadores u otra información a sus datos, el receptor no sabrá dónde '$ string1' termina y' $ string2' comienza. –