https://github.com/aternosorg/php-etcd
PHP gRPC client for etcd v3
https://github.com/aternosorg/php-etcd
Last synced: about 1 year ago
JSON representation
PHP gRPC client for etcd v3
- Host: GitHub
- URL: https://github.com/aternosorg/php-etcd
- Owner: aternosorg
- License: mit
- Created: 2019-01-17T02:45:04.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2024-01-29T11:24:52.000Z (over 2 years ago)
- Last Synced: 2024-11-08T10:30:38.520Z (over 1 year ago)
- Language: PHP
- Homepage: https://packagist.org/packages/aternos/etcd
- Size: 120 KB
- Stars: 24
- Watchers: 3
- Forks: 5
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# PHP gRPC client for etcd v3
Full and/or simplified client for [etcd](https://github.com/etcd-io/etcd) v3 using [gRPC](https://github.com/grpc/grpc/).
### About
This library includes the generated gRPC classes from the `.proto` files in the etcd repository
in the [grpc](grpc) folder. You can use the (more complicated) gRPC classes or the simpler [`Client`](src/Client.php)
class for basic functionality. There are currently only a few basic functions implemented in the
Client class, so feel free to add more functions when you implement them with the gRPC classes and
create a pull request.
### Installation
The gRPC PHP extension has to be installed to use this library.
See [this](https://github.com/grpc/grpc/tree/master/src/php) for a full explanation.
```bash
sudo apt install php php-dev php-pear
sudo pecl install grpc
```
And add `extension=grpc.so` to the `php.ini` file.
The `protobuf` extension is not necessary, because it's a dependency of this library, which you
can install using
```bash
composer require aternos/etcd
```
### Usage
#### Client class
```php
put("key", "value");
$client->get("key");
$client->delete("key");
$client->putIf("key", "newValue", "valueToCompareWith");
$client->deleteIf("key", "valueToCompareWith");
// complex transaction example
$leaseId = $client->getLeaseID(10);
$putOp = $client->getPutOperation('key', 'someValueToPutOnSuccess', $leaseId);
$getOp = $client->getGetOperation('key');
// following compare checks for key existence
$compare = $client->getCompare('key', '0', \Etcdserverpb\Compare\CompareResult::EQUAL, \Etcdserverpb\Compare\CompareTarget::MOD);
// execute Put operation and return the key we stored, just return the key value if it already exists
$txnResponse = $client->txnRequest([$putOp, $getOp], [$getOp], [$compare]);
$result = $client->getResponses($txnResponse, 'response_range', true);
// $result[0] contains "someValueToPutOnSuccess"
```
#### Sharded client
```php
put("key", "value");
$shardedClient->get("key");
```
### Failover client
- automatically and transparently fails-over in case etcd host fails
```php
setHoldoffTime(60);
$failoverClient->put("key", "value");
$failoverClient->get("key");
```