socket_wirte、socket_read、socket_send、socket_recv

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 的数据
posted @ 2017-06-13 17:27  动态信息凝聚体  阅读(551)  评论(0编辑  收藏  举报