PHP code example of yiisoft / mutex-db-redis

1. Go to this page and download the library: Download yiisoft/mutex-db-redis 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/ */

    

yiisoft / mutex-db-redis example snippets


/**
 * @var \Predis\ClientInterface $client Predis client instance to use.
 */

$mutex = new \Yiisoft\Mutex\Redis\RedisMutex(
    'mutex-name',
    $client,
    60, // Optional. Number of seconds in which the lock will be auto released. Default is `30`.
);

$mutexFactory = new \Yiisoft\Mutex\Redis\RedisMutexFactory(
    $client,
    60, // Optional. Number of seconds in which the lock will be auto released. Default is `30`.
);

$synchronizer = new \Yiisoft\Mutex\Synchronizer($mutexFactory);

$newCount = $synchronizer->execute('critical', function () {
    return $counter->increase();
}, 10);

$simpleMutex = \Yiisoft\Mutex\SimpleMutex($mutexFactory);

if (!$simpleMutex->acquire('critical', 10)) {
    throw new \Yiisoft\Mutex\Exception\MutexLockedException('Unable to acquire the "critical" mutex.');
}

$newCount = $counter->increase();
$simpleMutex->release('critical');

$mutex = $mutexFactory->createAndAcquire('critical', 10);
$newCount = $counter->increase();
$mutex->release();

$mutex = $mutexFactory->create('critical');

if (!$mutex->acquire(10)) {
    throw new \Yiisoft\Mutex\Exception\MutexLockedException('Unable to acquire the "critical" mutex.');
}

$newCount = $counter->increase();
$mutex->release();

$mutex = $mutex->withRetryDelay(100);