From 4cf6ef1b89bb6e40e279b2dd5efa4eedb76cabd3 Mon Sep 17 00:00:00 2001 From: Marius Date: Fri, 18 Oct 2019 13:24:24 +0300 Subject: [PATCH 1/2] Timeout when reading data from socket --- src/Net/Zabbix/Sender.php | 36 +++++++++++++++++++++++++----------- 1 file changed, 25 insertions(+), 11 deletions(-) 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; } From 13a3da3eed26659efa38d2dc49c9a16b0c0c2fdc Mon Sep 17 00:00:00 2001 From: Marius Date: Mon, 21 Oct 2019 17:26:41 +0300 Subject: [PATCH 2/2] Ignore .idea from git --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index aea307f..80a6af9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ run_test +.idea