diff --git a/.gitignore b/.gitignore index aea307f..80a6af9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ run_test +.idea diff --git a/src/Net/Zabbix/Sender.php b/src/Net/Zabbix/Sender.php index 24fbf50..7dfc725 100644 --- a/src/Net/Zabbix/Sender.php +++ b/src/Net/Zabbix/Sender.php @@ -224,22 +224,36 @@ private function _write($socket,$data){ /** * read data from socket - * @throws Net\Zabbix\Exception\SenderNetworkException - * - */ - private function _read($socket){ - if(! $socket){ + * @param $socket + * @return bool|string + */ + private function _read($socket) { + if (!$socket) { throw new SenderNetworkException('socket was not readable,connect failed.'); } - $recvData = ""; - while(!feof($socket)){ - $buffer = fread($socket,8192); - if($buffer === false){ - return false; + + stream_set_timeout($socket, $this->_timeout); + + $recvData = ''; + + while (!feof($socket)) { + $buffer = fread($socket, 8192); + if ($buffer === false) { + return false; } + + if ($buffer === '') { + // Check for timeout + $metaData = stream_get_meta_data($socket); + if ($metaData['timed_out'] === true) { + return false; + } + } + $recvData .= $buffer; } - return $recvData; + + return $recvData; }