在此函数中运行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调用的行)
答案 0 :(得分:1)
错误是EAGAIN
(或EWOULDBLOCK
,有时候这些错误是相同的)并且意味着套接字是非阻塞的,并且此刻没有任何内容可读。您可以在遇到错误之前等待,直到您阅读某些内容,或者在尝试接收之前使用其他方法查找是否有要读取的数据。