caradvice / consul-php-sdk
用于与consul.io API通信的SDK
v1.2.1
2016-10-06 03:55 UTC
Requires
- guzzlehttp/guzzle: ^6.0
- psr/log: ~1.0
This package is not auto-updated.
Last update: 2024-09-12 22:38:47 UTC
README
兼容性
此表显示了此SDK与Guzzle版本的兼容性
安装
此库可以使用composer安装
composer require sensiolabs/consul-php-sdk
用法
使用此SDK的简单方法是通过实例化服务工厂
$sf = new SensioLabs\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
一些实用工具
- 锁处理器:实现分布式锁的简单类