diff --git a/CHANGELOG.md b/CHANGELOG.md index 64c7bb7f..b6070804 100644 --- a/CHANGELOG.md +++ b/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) ================================================================================ diff --git a/src/Connection/Parameters.php b/src/Connection/Parameters.php index 13af0eb0..a868ec46 100644 --- a/src/Connection/Parameters.php +++ b/src/Connection/Parameters.php @@ -26,7 +26,6 @@ class Parameters implements ParametersInterface 'scheme' => 'tcp', 'host' => '127.0.0.1', 'port' => 6379, - 'timeout' => 5.0, ); /** diff --git a/src/Connection/PhpiredisSocketConnection.php b/src/Connection/PhpiredisSocketConnection.php index e180d97d..d5cc94fa 100644 --- a/src/Connection/PhpiredisSocketConnection.php +++ b/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; diff --git a/src/Connection/PhpiredisStreamConnection.php b/src/Connection/PhpiredisStreamConnection.php index 9c55f9ba..4baf0af4 100644 --- a/src/Connection/PhpiredisStreamConnection.php +++ b/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); diff --git a/src/Connection/StreamConnection.php b/src/Connection/StreamConnection.php index 719fe123..578c116a 100644 --- a/src/Connection/StreamConnection.php +++ b/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); diff --git a/src/Connection/WebdisConnection.php b/src/Connection/WebdisConnection.php index 56a90bb4..512bdd74 100644 --- a/src/Connection/WebdisConnection.php +++ b/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, diff --git a/tests/Predis/Connection/ParametersTest.php b/tests/Predis/Connection/ParametersTest.php index 0504a4de..6aae1fc9 100644 --- a/tests/Predis/Connection/ParametersTest.php +++ b/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, ); }