據我所知,有可能在PHP 5.x中創建一個nonblocking網絡socket。非阻塞套接字:消息是否排隊?
但如果腳本中使用相同的非阻塞套接字如下發送幾條長的消息,會發生什麼:
socket_write($socket, $string1, $length);
socket_write($socket, $string2, $length);
socket_write($socket, $string3, $length);
socket_write($socket, $string4, $length);
難道這些郵件排隊(?在發送/接收端)或者是有可能的是,接收端收到部分不同的消息,因爲他們發送「並行」?
例如:是有可能的是,接收端收到10個字節的$字符串1,那麼$字符串2 30個字節,然後又25個字節的字符串1 $ ...等等....
+1另請參閱http://stackoverflow.com/questions/1432477/can-php-asynchronously-use-sockets – msanford 2012-03-16 15:38:38
這意味着對於我上面的示例:TCP套接字將保證接收器永遠不會看到$ string2中的數據,3或4直到$ string1被完全接收? – Mike 2012-03-16 15:40:56
是的,但請記住所有數據都寫入同一個套接字,因此接收方將看到數據爲單個信息流。除非給數據添加字符串長度,分隔符或其他信息,否則接收者將不知道「$ string1」結束和「$ string2」開始的位置。 – 2012-03-16 15:46:49