据我所知,有可能在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