Abstract Class yii\mutex\Mutex
Inheritance | yii\mutex\Mutex » yii\base\Component » yii\base\BaseObject |
---|---|
Implements | yii\base\Configurable |
Subclasses | yii\mutex\DbMutex, yii\mutex\FileMutex, yii\mutex\MysqlMutex, yii\mutex\OracleMutex, yii\mutex\PgsqlMutex, yii\redis\Mutex |
Available since version | 2.0 |
Source Code | https://github.com/yiisoft/yii2/blob/master/framework/mutex/Mutex.php |
The Mutex component allows mutual execution of concurrent processes in order to prevent "race conditions".
This is achieved by using a "lock" mechanism. Each possibly concurrent thread cooperates by acquiring a lock before accessing the corresponding data.
Usage example:
if ($mutex->acquire($mutexName)) {
// business logic execution
} else {
// execution is blocked!
}
This is a base class, which should be extended in order to implement the actual lock mechanism.
Public Properties
Property | Type | Description | Defined By |
---|---|---|---|
$autoRelease | boolean | Whether all locks acquired in this process (i.e. local locks) must be released automatically before finishing script execution. | yii\mutex\Mutex |
$behaviors | yii\base\Behavior[] | List of behaviors attached to this component. This property is read-only. | yii\base\Component |
Public Methods
Method | Description | Defined By |
---|---|---|
__call() | Calls the named method which is not a class method. | yii\base\BaseObject |
__clone() | This method is called after the object is created by cloning an existing one. | yii\base\Component |
__construct() | Constructor. | yii\base\BaseObject |
__get() | Returns the value of an object property. | yii\base\BaseObject |
__isset() | Checks if a property is set, i.e. defined and not null. | yii\base\BaseObject |
__set() | Sets value of an object property. | yii\base\BaseObject |
__unset() | Sets an object property to null. | yii\base\BaseObject |
acquire() | Acquires a lock by name. | yii\mutex\Mutex |
attachBehavior() | Attaches a behavior to this component. | yii\base\Component |
attachBehaviors() | Attaches a list of behaviors to the component. | yii\base\Component |
behaviors() | Returns a list of behaviors that this component should behave as. | yii\base\Component |
canGetProperty() | Returns a value indicating whether a property can be read. | yii\base\BaseObject |
canSetProperty() | Returns a value indicating whether a property can be set. | yii\base\BaseObject |
className() | Returns the fully qualified name of this class. | yii\base\BaseObject |
detachBehavior() | Detaches a behavior from the component. | yii\base\Component |
detachBehaviors() | Detaches all behaviors from the component. | yii\base\Component |
ensureBehaviors() | Makes sure that the behaviors declared in behaviors() are attached to this component. | yii\base\Component |
getBehavior() | Returns the named behavior object. | yii\base\Component |
getBehaviors() | Returns all behaviors attached to this component. | yii\base\Component |
hasEventHandlers() | Returns a value indicating whether there is any handler attached to the named event. | yii\base\Component |
hasMethod() | Returns a value indicating whether a method is defined. | yii\base\BaseObject |
hasProperty() | Returns a value indicating whether a property is defined. | yii\base\BaseObject |
init() | Initializes the Mutex component. | yii\mutex\Mutex |
isAcquired() | Checks if a lock is acquired by the current process. | yii\mutex\Mutex |
off() | Detaches an existing event handler from this component. | yii\base\Component |
on() | Attaches an event handler to an event. | yii\base\Component |
release() | Releases acquired lock. This method will return false in case the lock was not found. | yii\mutex\Mutex |
trigger() | Triggers an event. | yii\base\Component |
Protected Methods
Method | Description | Defined By |
---|---|---|
acquireLock() | This method should be extended by a concrete Mutex implementations. Acquires lock by name. | yii\mutex\Mutex |
releaseLock() | This method should be extended by a concrete Mutex implementations. Releases lock by given name. | yii\mutex\Mutex |
Property Details
Whether all locks acquired in this process (i.e. local locks) must be released automatically before finishing script execution. Defaults to true. Setting this property to true means that all locks acquired in this process must be released (regardless of errors or exceptions).
Method Details
Acquires a lock by name.
public boolean acquire ( $name, $timeout = 0 ) | ||
$name | string | Of the lock to be acquired. Must be unique. |
$timeout | integer | Time (in seconds) to wait for lock to be released. Defaults to zero meaning that method will return false immediately in case lock was already acquired. |
return | boolean | Lock acquiring result. |
---|
This method should be extended by a concrete Mutex implementations. Acquires lock by name.
protected abstract boolean acquireLock ( $name, $timeout = 0 ) | ||
$name | string | Of the lock to be acquired. |
$timeout | integer | Time (in seconds) to wait for the lock to be released. |
return | boolean | Acquiring result. |
---|
Initializes the Mutex component.
public void init ( ) |
Checks if a lock is acquired by the current process.
Note that it returns false if the mutex is acquired in another process.
public boolean isAcquired ( $name ) | ||
$name | string | Of the lock to check. |
return | boolean | Returns true if currently acquired. |
---|
Releases acquired lock. This method will return false in case the lock was not found.
public boolean release ( $name ) | ||
$name | string | Of the lock to be released. This lock must already exist. |
return | boolean | Lock release result: false in case named lock was not found.. |
---|
This method should be extended by a concrete Mutex implementations. Releases lock by given name.
protected abstract boolean releaseLock ( $name ) | ||
$name | string | Of the lock to be released. |
return | boolean | Release result. |
---|