sellerlabs/consul-php-sdk

This package is abandoned and no longer maintained. No replacement package was suggested.

SDK to talk with consul.io API. Forked from life360/consul-php-sdk

v1.2.3 2016-01-28 17:50 UTC

README

Installation

This library can be installed with composer:

composer require sellerlabs/consul-php-sdk

Usage

The simple way to use this SDK, is to instantiate the service factory:

$sf = new SellerLabs\Consul\ServiceFactory();

Then, a service could be retrieve from this factory:

$kv = $sf->get('kv');

Then, a service expose few methods mapped from the consul API:

$kv->put('test/foo/bar', 'bazinga');
$kv->get('test/foo/bar', ['raw' => true]);
$kv->delete('test/foo/bar');

All services methods follow the same convention:

$response = $service->method($mandatoryArgument, $someOptions);
  • All API mandatory arguments are placed as first;
  • All API optional arguments are directly mapped from $someOptions;
  • All methods return raw guzzle response.

So if you want to acquire an exclusive lock:

// Start a session
$sessionId = $session->create()->json()['ID'];

// Lock a key / value with the current session
$lockAcquired = $kv
    ->put(
        'tests/session/a-lock',
        'a value',
        ['acquire' => $sessionId]
    )
    ->json();

if (false === $lockAcquired) {
    $session->destroy($sessionId);

    echo "The lock is already acquire by another node.\n";
    exit(1);
}

echo "Do you jobs here....";
sleep(5);
echo "End\n";

$kv->delete('tests/session/a-lock');
$session->destroy($sessionId);

Available services

  • agent
  • catalog
  • health
  • kv
  • session

Some utilities

  • Lock handler: Simple class that implement a distributed lock