Come ho capito, è possibile creare una rete nonblockingsocket in PHP 5.x.Zoccoli non bloccanti: i messaggi sono in coda?
Ma cosa succede se uno script invia diversi messaggi lunghi tramite la stessa presa non bloccante come segue:
socket_write($socket, $string1, $length);
socket_write($socket, $string2, $length);
socket_write($socket, $string3, $length);
socket_write($socket, $string4, $length);
Sono questi messaggi in coda (? Sul lato mittente/destinatario) o è possibile che il ricevitore ottiene parti di diversi messaggi perché hanno inviato "parallelo"?
Ad esempio: Is è possibile che il destinatario riceve 10 byte di $ stringa1, poi 30 byte di $ stringa2, poi altri 25 byte di $ stringa1 ... e così via ....
+1 Vedere anche http://stackoverflow.com/questions/1432477/can-php-asynchronously-use-sockets – msanford
Ciò significa per il mio esempio sopra: i socket TCP garantiranno che il ricevitore non vedrà mai i dati da $ string2 , 3 o 4 fino a $ stringa1 è stata ricevuta completamente? – Mike
Sì, ma tieni presente che tutti i dati vengono scritti sullo stesso socket, quindi il destinatario vedrà i dati come un singolo flusso di informazioni. A meno che non si aggiungano lunghezze, delimitatori o altre informazioni sui dati, il ricevitore non saprà dove termina '$ string1' e inizia $ String2'. –