activecollab / etcd
此包已被废弃且不再维护。未建议替代包。
具有最小依赖的etcd客户端
1.0.4
2016-01-09 13:45 UTC
Requires
- php: >=5.6.0
- ext-curl: *
Requires (Dev)
- phpunit/phpunit: ~5.0
README
etcd是一个分布式配置系统,是coreos项目的一部分。
此仓库为PHP应用程序提供etcd客户端库。它基于linkorb/etcd-php。要了解我们为何分叉它,请点击这里。
安装etcd
要安装etcd,请按照项目发布页面上的etcd团队发布的说明进行操作
https://github.com/coreos/etcd/releases/
安装ActiveCollab/etcd
最简单的方法是使用composer安装它
{ "require" : { "activecollab/etcd": "^1.0" } }
使用客户端
use use ActiveCollab\Etcd\Client as EtcdClient; $client = new EtcdClient('http://127.0.0.1:4001'); // Get, set, update, remove key if (!$client->exists('/key/name')) { $client->set('/key/name', 'value'); } $client->set('/key/name', 'value', 10); // Set TTL print $client->get('/key/name'); $client->update('/key/name', 'new value'); $client->remove('/key/name'); // Working with dirs if (!$client->dirExists('/dir/path')) { $client->createDir('/dir/path'); } $client->updateDir('/dir/path', 10); // Set TTL $client->removeDir('/dir/path'); // Get dir info $client->dirInfo('/dir/path'); // List subdirectories $client->listDirs('/dir/path'); // Return key value map for a given dir $client->getKeyValueMap('/dir/path')
沙盒路径
如果您在客户端实例中配置沙盒路径,所有密钥都将以该路径为前缀
$client = new EtcdClient('http://127.0.0.1:4001'); $client->setSandboxPath('/my/namespace'); $client->set('/key/name', 'value'); // will set /my/namespace/key/name print $client->get('/key/name'); // will print /my/namespace/key/name
客户端提供的一种更便捷的方法是,可以在特定的沙盒中调用多个命令,并在完成后将客户端恢复到之前的沙盒路径
$client = new EtcdClient('http://127.0.0.1:4001'); $client->setSandboxPath('/my/namespace'); // Path relative to the current sandbox path $client->sandboxed('./different/namespace', function(EtcdClient &$c) { $c->set('new_key', 123); // Sets /my/namespace/different/namespace/new_key }); // Absolute path $client->sandboxed('/different/namespace', function(EtcdClient &$c) { $c->set('new_key', 123); // Sets /different/namespace/new_key }); print $client->getSandboxPath(); // Prints '/my/namespace'
SSL
可以配置客户端不验证SSL对等方
$client = (new Client('https://127.0.0.1:4001'))->verifySslPeer(false);
以及使用自定义CA文件
$client = (new Client('https://127.0.0.1:4001'))->verifySslPeer(true, '/path/to/ca/file');
为什么分叉?
虽然原始库运行良好,但它依赖于两个大型包:Symfony Console和Guzzle。对于像配置访问这样的底层功能,我们希望有一个更敏捷的解决方案,因此我们删除了CLI命令,并将原始库重构为使用PHP的curl扩展。