Ultimate Lock
Component ID
2409505
Component name
Ultimate Lock
Component type
module
Maintenance status
Development status
Component security advisory coverage
not-covered
Component created
Component changed
Component body
The Ultimate Lock module provides an OOP based framework for handling locks
in a robust, extensible and feature-rich way.
Configuration
To use as a default lock backend, configure settings.php
Basic/simple configuration
<?php
$conf['lock_inc'] = 'sites/all/modules/contrib/ultimate_lock.lock.inc';
?>
Adding eventhandler support through queues
<?php
$conf['lock_inc'] = 'sites/all/modules/contrib/ultimate_lock.lock.inc';
$conf['ultimate_lock_service_options_UltimateLockServiceDatabase'] = array(
'ItemClass' => 'UltimateLockItemQueue',
);
?>
Using memcache
<?php
$conf['lock_inc'] = 'sites/all/modules/contrib/ultimate_lock.lock.inc';
$conf['ultimate_lock_default_service'] = 'UltimateLockServiceMemcache';
?>
Using memcache with redis queues
<?php
$conf['lock_inc'] = 'sites/all/modules/contrib/ultimate_lock.lock.inc';
$conf['ultimate_lock_default_service'] = 'UltimateLockServiceMemcache';
$conf['ultimate_lock_service_options_UltimateLockServiceMemcache'] = array(
'ItemClass' => 'UltimateLockItemQueue',
);
$conf['ultimate_lock_item_options_UltimateLockItemQueue'] = array(
'class' => 'DrupalRedisQueue',
);
?>
Usage
Acquire lock
<?php
$lock = UltimateLock::service(
'UltimateLockServiceDatabase',
array('ItemClass' => 'UltimateLockItemQueue')
)->acquire('mylockname', 20);
if ($lock) {
// We got the lock!
$lock->addEventHandler('release', 'mycallback');
// Lock is released when object is destroyed (out-of-scope)
// $lock->release()
}
?>
Persist lock
<?php
$lock = UltimateLock::acquire('mylockname', 20);
if ($lock) {
// We got the lock! Don't release upon end of request.
$lock->persist();
}
?>
Re-acquire lock from other request
<?php
$lock = UltimateLock::reAcquire('mylockname', 20);
if ($lock) {
// We got the lock!
// Lock is released when object is destroyed (out-of-scope)
// $lock->release()
}
?>
