PHP - 使用socket_recv时出错

时间:2012-07-23 10:13:30

标签: php sockets

在此函数中运行socket_recv时出现套接字错误:

function readByteXByteSIBmsg() {
    $msg = "";
    $buf="";
    try {
     while( $ret=socket_recv($this->kpSocket,$buf,8192,0)){
        $msg.=$buf;
        if($ret<8192) break;
     }


    $this->deb_print("KpCore:readByteXByteSIBmsg:READ LOOP TERMINATED");
    } catch (Exception $e) {
        err_print("KPICore:readByteXByteSIBmsg:Exception on EVENT  HANDLER:RECEIVE:\n" . $e);
        $this->$KP_ERROR_ID = $this->ERR_SOCKET_TIMEOUT;
    }
    return $msg;
}

这是错误的文字:

PHP Warning:  socket_recv(): unable to read from socket [11]: Resource temporarily unavailable in /home/luca/Documenti/Tesi/M3 Agent Page/lib/KPICore.php on line 236

(第236行是socket_recv调用的行)

1 个答案:

答案 0 :(得分:1)

错误是EAGAIN(或EWOULDBLOCK,有时候这些错误是相同的)并且意味着套接字是非阻塞的,并且此刻没有任何内容可读。您可以在遇到错误之前等待,直到您阅读某些内容,或者在尝试接收之前使用其他方法查找是否有要读取的数据。