Просмотр исходного кода

Remove "timeout" as a default parameter in Connection\Parameters.

Falling back to a default timeout values should be done by the connection class
as it is an implementation detail that may vary depending on the backend.
Daniele Alessandri 10 лет назад
Родитель
Сommit
2b0c8fbb26

+ 4 - 0
CHANGELOG.md

@@ -17,6 +17,10 @@ v1.1.0 (2015-xx-xx)
   These parameters augment the user-supplied parameters when creating a new
   connection but they do not override specific parameters when already defined.
 
+- Predis\Connection\Parameters does not have a default for "timeout" anymore,
+  falling back to a default value is a responsibility of each connection class.
+  Internally the default timeout for connect() operations is still 5 seconds.
+
 
 v1.0.1 (2015-01-02)
 ================================================================================

+ 0 - 1
src/Connection/Parameters.php

@@ -26,7 +26,6 @@ class Parameters implements ParametersInterface
         'scheme' => 'tcp',
         'host' => '127.0.0.1',
         'port' => 6379,
-        'timeout' => 5.0,
     );
 
     /**

+ 2 - 2
src/Connection/PhpiredisSocketConnection.php

@@ -36,7 +36,7 @@ use Predis\Response\Status as StatusResponse;
  *  - host: hostname or IP address of the server.
  *  - port: TCP port of the server.
  *  - path: path of a UNIX domain socket when scheme is 'unix'.
- *  - timeout: timeout to perform the connection.
+ *  - timeout: timeout to perform the connection (default is 5 seconds).
  *  - read_write_timeout: timeout of read / write operations.
  *
  * @link http://github.com/nrk/phpiredis
@@ -286,7 +286,7 @@ class PhpiredisSocketConnection extends AbstractConnection
         $null = null;
         $selectable = array($socket);
 
-        $timeout = (float) $parameters->timeout;
+        $timeout = (isset($parameters->timeout) ? (float) $parameters->timeout : 5.0);
         $timeoutSecs = floor($timeout);
         $timeoutUSecs = ($timeout - $timeoutSecs) * 1000000;
 

+ 3 - 1
src/Connection/PhpiredisStreamConnection.php

@@ -108,7 +108,9 @@ class PhpiredisStreamConnection extends StreamConnection
     protected function createStreamSocket(ParametersInterface $parameters, $address, $flags, $context = null)
     {
         $socket = null;
-        $resource = @stream_socket_client($address, $errno, $errstr, (float) $parameters->timeout, $flags);
+        $timeout = (isset($parameters->timeout) ? (float) $parameters->timeout : 5.0);
+
+        $resource = @stream_socket_client($address, $errno, $errstr, $timeout, $flags);
 
         if (!$resource) {
             $this->onConnectionError(trim($errstr), $errno);

+ 2 - 2
src/Connection/StreamConnection.php

@@ -23,7 +23,7 @@ use Predis\Response\Status as StatusResponse;
  *  - host: hostname or IP address of the server.
  *  - port: TCP port of the server.
  *  - path: path of a UNIX domain socket when scheme is 'unix'.
- *  - timeout: timeout to perform the connection.
+ *  - timeout: timeout to perform the connection (default is 5 seconds).
  *  - read_write_timeout: timeout of read / write operations.
  *  - async_connect: performs the connection asynchronously.
  *  - tcp_nodelay: enables or disables Nagle's algorithm for coalescing.
@@ -94,7 +94,7 @@ class StreamConnection extends AbstractConnection
      */
     protected function createStreamSocket(ParametersInterface $parameters, $address, $flags)
     {
-        $timeout = (float) $parameters->timeout;
+        $timeout = (isset($parameters->timeout) ? (float) $parameters->timeout : 5.0);
 
         if (!$resource = @stream_socket_client($address, $errno, $errstr, $timeout, $flags)) {
             $this->onConnectionError(trim($errstr), $errno);

+ 3 - 2
src/Connection/WebdisConnection.php

@@ -33,7 +33,7 @@ use Predis\Response\Status as StatusResponse;
  *  - scheme: must be 'http'.
  *  - host: hostname or IP address of the server.
  *  - port: TCP port of the server.
- *  - timeout: timeout to perform the connection.
+ *  - timeout: timeout to perform the connection (default is 5 seconds).
  *  - user: username for authentication.
  *  - pass: password for authentication.
  *
@@ -117,10 +117,11 @@ class WebdisConnection implements NodeConnectionInterface
     private function createCurl()
     {
         $parameters = $this->getParameters();
+        $timeout = (isset($parameters->timeout) ? (float) $parameters->timeout : 5.0) * 1000;
 
         $options = array(
             CURLOPT_FAILONERROR => true,
-            CURLOPT_CONNECTTIMEOUT_MS => $parameters->timeout * 1000,
+            CURLOPT_CONNECTTIMEOUT_MS => $timeout,
             CURLOPT_URL => "{$parameters->scheme}://{$parameters->host}:{$parameters->port}",
             CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
             CURLOPT_POST => true,

+ 0 - 2
tests/Predis/Connection/ParametersTest.php

@@ -30,7 +30,6 @@ class ParametersTest extends PredisTestCase
         $this->assertEquals($defaults['scheme'], $parameters->scheme);
         $this->assertEquals($defaults['host'], $parameters->host);
         $this->assertEquals($defaults['port'], $parameters->port);
-        $this->assertEquals($defaults['timeout'], $parameters->timeout);
     }
 
     /**
@@ -285,7 +284,6 @@ class ParametersTest extends PredisTestCase
             'scheme' => 'tcp',
             'host' => '127.0.0.1',
             'port' => 6379,
-            'timeout' => 5.0,
         );
     }