php 自带的 socket 支持有两对收发函数:
socket_wirte、socket_read(一次性读写)
socket_send、socket_recv(分段循环读写)
网上一些人流传的一种写法是错误的,这将导致读取无法结束:
while( $str = socket_read($socket, $len) ){
$arr[] = $str;
}
比较正确的写法:
while( $str = socket_recv($socket, ……) ){
$arr[] = $str;
}
或者:
$str = socket_read($socket, $len); // 一次性接收完,丢弃超过 $len 的数据