Commit Graph

1419 Commits

Author SHA1 Message Date
Daniele Alessandri 35b2c99186 Update FAQ.
[ci skip]
2013-12-16 16:52:04 +01:00
Daniele Alessandri 0f34f41ccf Fix and reword some exception messages. 2013-12-16 15:13:18 +01:00
Daniele Alessandri 43f278fb71 Update testing README.
[ci skip]
2013-12-16 11:47:22 +01:00
Daniele Alessandri b7a7b6838b Merge branch 'v0.9/fix-bin-scripts' 2013-12-15 17:06:05 +01:00
Daniele Alessandri 714f9ddc64 [bin] Drop extension from scripts in the bin directory. 2013-12-15 17:05:30 +01:00
Daniele Alessandri d465de7b42 [bin] Handle duplicate class names or aliases in same namespace.
This condition can occur when merging multiple class files (with their
own independent "use" directives) in one big file: when imported class
names or aliases clashes, the script now tries to automatically rename
them by defining a new alias in the "use" directive and renaming the
occurences in the buffer containing the class code.

This fix is naive at best, but seems to work fine so we will just live
with it for now.
2013-12-15 17:05:07 +01:00
Daniele Alessandri 405ae4af65 [bin] Fix broken rendering of "use ... as ..." in output. 2013-12-15 17:04:55 +01:00
Daniele Alessandri 7e89719ceb Revert usage of "short" namespaces in use directives.
We started using partially-qualified names as an experiment but we are
reverting to using fully-qualified names + aliases in use directives.
2013-12-15 17:00:45 +01:00
Daniele Alessandri aa9aafe926 Remove CHANGELOG.NAMING.md.
Will be most likely replaced by UPGRADING.md or something like that.

[ci skip]
2013-12-15 14:04:52 +01:00
Daniele Alessandri 0779c1c24a Trim some more "use" directives in Predis\Client. 2013-12-15 14:01:05 +01:00
Daniele Alessandri e66c33a444 Merge branch 'v0.9/connection-namespace-1' 2013-12-15 13:44:04 +01:00
Daniele Alessandri 001a7c0827 Update CHANGELOG. 2013-12-15 13:42:47 +01:00
Daniele Alessandri 58c5029574 Rename Predis\Connection\AggregatedConnectionInterface. 2013-12-15 12:38:21 +01:00
Daniele Alessandri 6ceebbfbec Rename Predis\Connection\SingleConnectionInterface::pushInitCommand().
The new name is more explicit as it makes obvious that the commands
added with it will be executed upon connect().
2013-12-15 11:25:38 +01:00
Daniele Alessandri c40ad5dd47 Rename Predis\Connection\ConnectionParameters. 2013-12-15 10:22:23 +01:00
Daniele Alessandri 2a7607f128 Rename Predis\Connection\ConnectionFactory. 2013-12-15 10:09:08 +01:00
Daniele Alessandri 278f89924c Set the test suite to run against Redis 2.8 on Travis CI. 2013-12-14 20:44:10 +01:00
Daniele Alessandri cbf015164c Rename Predis\Client::raw() to Predis\Client::executeRaw().
This is more consistent with Predis\Client::executeRaw() and its more
explicit since simply "raw" as a method name was a bit too vague even
despite being nicely short.
2013-12-14 20:37:28 +01:00
Daniele Alessandri fded76bca3 Merge branch 'v0.9/connection-persistent-path' 2013-12-14 14:16:54 +01:00
Daniele Alessandri e7f2d28f23 Use path to differentiate persistent TCP streams.
Closes #139.
2013-12-14 14:15:41 +01:00
Daniele Alessandri 1c05c878f4 Update CHANGELOG. 2013-12-11 13:11:39 +01:00
Daniele Alessandri 5eb975ef69 Improve URI parsing for connection parameters.
Using PHP's "parse_str()" to parse the query string is slightly more
efficient then our own code especially when the number of fields in
the query string grows, with the additional benefit of supporting
arrays for values when brackets are present in fieldnames.

So after this commit, providing this URI string:

  $string = 'tcp://127.0.0.1?metavars[]=foo&metavars[]=hoge';

Is equivalent to providing the following named array:

  $array = [
    'scheme' => 'tcp',
    'host' => '127.0.0.1',
    'metavars' => ['foo', 'hoge'],
  ];

Aside from this improvement, the URI parsing behavior has not changed.
2013-12-11 12:45:47 +01:00
Daniele Alessandri 3fbc012c03 Add "path" in phpdoc of connections supporting UNIX domain sockets. 2013-12-11 12:20:10 +01:00
Daniele Alessandri cebdf889a4 Rename connection to Predis\Connection\PhpiredisSocketConnection. 2013-12-10 22:14:34 +01:00
Daniele Alessandri 863718bd2b Apply another minor fix to README. 2013-12-10 22:11:40 +01:00
Daniele Alessandri b01ac201d6 Fix README.
[ci skip]
2013-12-10 22:00:53 +01:00
Daniele Alessandri d5bd28958a Minor code styling adjustments. 2013-12-10 21:58:53 +01:00
Daniele Alessandri 95b9f63cab Rename write and read methods of the composable connection interface. 2013-12-10 21:26:11 +01:00
Daniele Alessandri 59b5658cf5 Big batch of phpdoc improvements and minor code styling fixes. 2013-12-10 19:21:52 +01:00
Daniele Alessandri 8744285cb3 Ignoring the plural form of "reply" for renames is dumb...
[ci skip]
2013-12-10 18:08:14 +01:00
Daniele Alessandri 14fda643f7 Replace remaining occurrences of "reply" with "response". 2013-12-10 15:54:41 +01:00
Daniele Alessandri 57e778e098 Tweak CONTRIBUTING.md.
[ci skip]
2013-12-09 12:22:25 +01:00
Daniele Alessandri f9fd4525b5 More minor tweaks in the README.
[ci skip]
2013-12-09 12:07:11 +01:00
Daniele Alessandri ac34983635 Pad headers lines in CHANGELOG.
[ci skip]
2013-12-09 11:46:14 +01:00
Daniele Alessandri 978e7ac551 Update CHANGELOG.
[ci skip]
2013-12-09 11:44:42 +01:00
Daniele Alessandri ca11c522d6 Miscellaneous fixes to README after rewrite.
... because spotting errors always happens after committing changes.

[ci skip]
2013-12-08 21:12:15 +01:00
Daniele Alessandri 6eed3d7647 Commit long overdue rewrite of the README.
[ci skip]
2013-12-08 20:54:12 +01:00
Daniele Alessandri 73cb6bbf2a [tests] Fix class name of connection parameters test case.
[ci skip]
2013-12-08 16:09:22 +01:00
Daniele Alessandri 5acdab9176 Merge branch 'v0.9/redis-cluster-fix'
Conflicts:
	lib/Predis/Connection/RedisCluster.php
2013-12-08 15:24:52 +01:00
Daniele Alessandri 35023dd83f Use a more appropriate exception. 2013-12-08 15:12:35 +01:00
Daniele Alessandri 70df7ca64d Apply common parameters to connections created on the fly in cluster.
These parameters are applied only to connections being created on the
fly when not part of the current pool. This condition usually happens
upon -MOVE or -ASK responses returned by Redis to redirect client to
different nodes.
2013-12-08 15:12:28 +01:00
Daniele Alessandri f0549b5dad Rewrite phpdoc comments for the redis-cluster connection backend. 2013-12-08 12:43:24 +01:00
Daniele Alessandri b7ac7595c2 Change signature of the connection parameters class constructor.
Only named arrays are explicitly accepted now, but the old behaviour
of creating a connection parameters instance out of an URI string or
a named array is still available using the "create()" static method.

  $array = ['host' => '127.0.0.1', 'timeout' => 1];
  $uri = 'tcp://127.0.0.1?timeout=1';

  $parameters = new ConnectionParameters($array);      // Arrays only
  $parameters = ConnectionParameters::create($array);  // Arrays OK
  $parameters = ConnectionParameters::create($uri);    // Strings OK

The purpose of the change is to have a more concise constructor with a
well defined signature.
2013-12-08 11:35:53 +01:00
Daniele Alessandri 1f66f4e8f7 Various fixes and improvements to redis-cluster connection backend.
List of changes:

  - The cluster connection can be initialized with a partial list of
    nodes, the full slots map will be fetched from Redis itself using
    the CLUSTER NODES command.
  - The slots map can be optionally retrieved from Redis if the server
    returns a -MOVE response, otherwise only the interested slot will
    be permanently reassigned to the new target node.
  - $cluster->connect() connects to a random connection in the pool
    instead of forcing the connect operation on all the connections.
2013-12-07 21:19:52 +01:00
Daniele Alessandri 73eb09378e Remove obsolete comments.
The phpiredis-based connection backends are not experiments anymore.

[ci skip]
2013-12-07 15:59:28 +01:00
Daniele Alessandri 427309db69 Apply code styling fixes.
There is actually no need for such indentations.
2013-12-07 15:41:45 +01:00
Daniele Alessandri ee45de4f0e Rename base response interface to Predis\Response\ResponseInterface. 2013-12-07 15:22:42 +01:00
Daniele Alessandri 6ece8c40a0 Merge branch 'v0.9/response-status' 2013-12-07 15:16:20 +01:00
Daniele Alessandri 373d30b070 Use Predis\Response\Status to identify all kinds of status responses.
Status response objects are needed mostly to make it possible from the
client perspective to differentiate a status response with the payload
"OK" from a normale bulk reply containing "OK".

The biggest change is for commands returning +OK responses: these were
previously translated to TRUE (bool value), but they are now returned
as instances of Predis\Response\Status. Just to illustrate an example
of the possibilities with this change we will use SET since it is the
most widely used command returning +OK:

  $response = $client->set('foo', 'bar');

  echo $response;         // 'OK'
  $response == 'OK';      // TRUE
  isset($response->ok);   // TRUE
  $response == true;      // TRUE
  $response === true;     // FALSE
  $response instanceof Predis\Response\ObjectInterface;     // TRUE
  $response instanceof Predis\Response\Status;              // TRUE

For those checking responses returned by commands such as SET or PONG,
the breaking change basically lies in the usage of strict comparison:
doing $response === true will now evaluate to FALSE instead of TRUE.

By default Predis caches common status responses such as OK or QUEUED
to lower the memory usage when using pipelines or transactions.
2013-12-07 15:15:23 +01:00
Daniele Alessandri ac8d0c1f42 Fix example.
[ci skip]
2013-12-02 16:12:43 +01:00