1. Go to this page and download the library: Download rtckit/react-redlock 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/ */
/**
* @param string $resource Redis key name
* @param float $ttl Lock's time to live (in seconds)
* @param ?string $token Unique identifier for lock in question
* @return PromiseInterface
*/
$custodian->acquire('MyResource', 60, 'r4nd0m_token')
->then(function (?Lock $lock) {
if (is_null($lock)) {
// Ooops, lock could not be acquired for MyResource
} else {
// Awesome, MyResource is locked for a minute
// ...
// Be nice and release the lock when done
$custodian->release($lock);
}
});
/**
* @param int $attempts Maximum spin/tries
* @param float $interval Spin/try interval (in seconds)
* @param string $resource Redis key name
* @param float $ttl Lock's time to live (in seconds)
* @param ?string $token Unique identifier for lock in question
* @return PromiseInterface
*/
$custodian->spin(100, 0.5, 'HotResource', 10, 'r4nd0m_token')
->then(function (?Lock $lock): void {
if (is_null($lock)) {
// Wow, after 100 tries (with a gap of 0.5 seconds) I've
// given up acquiring a lock on HotResource
} else {
// Awesome, HotResource is locked for 10 seconds
// ...
// Again, be nice and release the lock when done
$custodian->release($lock);
}
})