sellerlabs/consul-php-sdk

此包已被废弃,不再维护。未建议替代包。

与 consul.io API 通信的 SDK。从 life360/consul-php-sdk 分支而来

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

README

安装

此库可以使用 composer 安装

composer require sellerlabs/consul-php-sdk

用法

使用此 SDK 的简单方法是实例化服务工厂

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

然后,可以从这个工厂检索服务

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

然后,服务暴露了一些来自 consul API 的方法

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

所有服务方法遵循相同的约定

$response = $service->method($mandatoryArgument, $someOptions);
  • 所有 API 必要参数都放在第一位;
  • 所有 API 可选参数直接映射自 $someOptions
  • 所有方法返回原始 guzzle 响应。

因此,如果您想获取一个独占锁

// 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);

可用服务

  • agent
  • catalog
  • health
  • kv
  • session

一些实用工具

  • 锁处理程序:实现分布式锁的简单类