PHP code example of sensiolabs / consul-php-sdk

1. Go to this page and download the library: Download sensiolabs/consul-php-sdk library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

sensiolabs / consul-php-sdk example snippets


$kv = new Consul\Services\KV();

$kv->put('config/feature-flag', 'enabled');

echo $kv->get('config/feature-flag', ['raw' => true])->getBody(); // enabled

use Consul\Client;
use Consul\Services\KV;

$client = new Client(['base_uri' => 'https://consul.example.com:8500']);

$kv = new KV($client);

$client = new Client([
    'base_uri' => 'https://consul.example.com:8500',
    'headers' => ['X-Consul-Token' => $token],
]);

$client = new Client(logger: $logger, client: $httpClient);

$response = $service->method($mandatoryArgument, $someOptions);

use Consul\Exception\ConsulExceptionInterface;

try {
    $kv->get('does/not/exist');
} catch (ConsulExceptionInterface $e) {
    // ...
}

use Consul\Services\Agent;
use Consul\Services\Health;

$agent = new Agent();

$agent->registerService([
    'ID' => 'api-1',
    'Name' => 'api',
    'Address' => '10.0.0.12',
    'Port' => 8080,
    'Check' => [
        'HTTP' => 'http://10.0.0.12:8080/health',
        'Interval' => '10s',
    ],
]);

// Later, find all healthy instances
$instances = (new Health())->service('api', ['passing' => true])->json();

$kv = new Consul\Services\KV();

foreach ($kv->get('config/', ['recurse' => true])->json() as $entry) {
    echo $entry['Key'], ' = ', base64_decode($entry['Value']), "\n";
}

$txn = new Consul\Services\TXN();

$txn->put([
    ['KV' => ['Verb' => 'set', 'Key' => 'config/a', 'Value' => base64_encode('1')]],
    ['KV' => ['Verb' => 'set', 'Key' => 'config/b', 'Value' => base64_encode('2')]],
]);

$snapshot = new Consul\Services\Snapshot();

file_put_contents('backup.snap', $snapshot->save()->getBody());

// Later...
$snapshot->restore(file_get_contents('backup.snap'));

use Consul\Helper\LockHandler;

$lock = new LockHandler('locks/my-job');

if (!$lock->lock()) {
    echo "The lock is already acquired by another node.\n";
    exit(1);
}

// Do your job here...

$lock->release();

use Consul\Helper\MultiLockHandler;
use Consul\Services\KV;
use Consul\Services\Session;

$lock = new MultiLockHandler(['resource1', 'resource2'], 60, new Session(), new KV(), 'my/lock/');

if ($lock->lock()) {
    try {
        // Do your job here...
        // and call $lock->renew() before the TTL (60s) expires, if needed
    } finally {
        $lock->release();
    }
}

use Consul\Helper\MultiSemaphore;
use Consul\Helper\MultiSemaphore\Resource;
use Consul\Services\KV;
use Consul\Services\Session;

$resources = [
    new Resource('resource1', 2, 7),
    new Resource('resource2', 3, 6),
    new Resource('resource3', 1, 1),
];

$semaphore = new MultiSemaphore($resources, 60, new Session(), new KV(), 'my/semaphore');

if ($semaphore->acquire()) {
    try {
        // Do your job here...
    } finally {
        $semaphore->release();
    }
}
bash
composer