Эх сурвалжийг харах

Change StreamConnection in order to disable read/write timeouts when the value of 'read_write_timeout' is also equal to 0.

Daniele Alessandri 14 жил өмнө
parent
commit
3f8b639e2b

+ 1 - 1
examples/PubSubContext.php

@@ -5,7 +5,7 @@ require_once 'SharedConfigurations.php';
 // events published on certain channels (PUBSUB).
 
 // Create a client and disable r/w timeout on the socket
-$redis  = new Predis\Client($single_server + array('read_write_timeout' => -1));
+$redis  = new Predis\Client($single_server + array('read_write_timeout' => 0));
 
 // Initialize a new pubsub context
 $pubsub = $redis->pubSubContext();

+ 4 - 2
lib/Predis/Network/StreamConnection.php

@@ -64,8 +64,10 @@ class StreamConnection extends ConnectionBase {
             $this->onCommunicationException(trim($errstr), $errno);
         }
         if (isset($parameters->read_write_timeout)) {
-            $timeoutSeconds  = floor($parameters->read_write_timeout);
-            $timeoutUSeconds = ($parameters->read_write_timeout - $timeoutSeconds) * 1000000;
+            $rwtimeout = $parameters->read_write_timeout;
+            $rwtimeout = $rwtimeout > 0 ? $rwtimeout : -1;
+            $timeoutSeconds  = floor($rwtimeout);
+            $timeoutUSeconds = ($rwtimeout - $timeoutSeconds) * 1000000;
             stream_set_timeout($resource, $timeoutSeconds, $timeoutUSeconds);
         }
         return $resource;