herroffizier / yiicachemutex
Mutex implementation based on Yii cache component
dev-master
2014-03-17 08:59 UTC
Requires
- php: >=5.3.0
This package is not auto-updated.
Last update: 2024-11-09 16:01:02 UTC
README
YiiCacheMutex is a mutex implementation for Yii framework based on Yii cache component.
Usage
First, copy files from this repo to extensions/yiicachemutex
and add YiiCacheMutex to Yii application:
return array( ... 'components'=>array( ... 'cacheMutex' => array( 'class' => 'ext.yiicachemutex.YiiCacheMutex', // Cache component name. // Useful when you want to use separate cache for mutexes. 'cacheName' => 'cache', // Time in microseconds to sleep between cache pollings. 'sleepTime' => 100, // Time in seconds for mutex to expire. // If set to 0 mutex will never expire but this is not recommended. 'expireTime' => 300, ), ... ), ... );
After that you can create mutexes by calling Yii::app()->cacheMutex->acqiure()
and release them by calling Yii::app()->cacheMutex->release()
.
Mutex acquiring may be blocking or nonblocking. For blocking acquiring a timeout may be set. Also mutexes may have expire time which is highly recommended to avoid deadlocks.
Usage examples:
// Get mutex 'test' if it's free, otherwise wait for it's release forever. Yii::app()->cacheMutex->acquire('test'); // Get mutex 'test' if it's free, otherwise return false immeditely. Yii::app()->cacheMutex->acquire('test', 0); // Wait 0.5s for mutex 'test' to be released. Yii::app()->cacheMutex->acquire('test', 500000); // Release acquired by current thread mutex 'test'. Yii::app()->cacheMutex->release('test');