0

この関数内で 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 呼び出しのある行です)

4

1 に答える 1

1

エラーはEAGAIN(またはEWOULDBLOCK、同じエラーの場合もあります) であり、ソケットが非ブロックであり、現時点で読み取るものが何もないことを意味します。エラーが発生している間、何かを読み取るまでビジー待機するか、他の方法を使用して、受信を試みる前に読み取るデータがあるかどうかを確認できます。

于 2012-07-23T10:20:18.940 に答える