You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
807 B
39 lines
807 B
12 years ago
|
<?php
|
||
|
|
||
|
namespace yii\mutex\db\mysql;
|
||
|
|
||
|
use Yii;
|
||
|
use yii\base\InvalidConfigException;
|
||
|
|
||
|
class Mutex extends \yii\mutex\db\Mutex
|
||
|
{
|
||
|
public function init()
|
||
|
{
|
||
|
parent::init();
|
||
|
if ($this->db->driverName !== 'mysql') {
|
||
|
throw new InvalidConfigException('');
|
||
|
}
|
||
|
}
|
||
|
|
||
|
protected function acquire($name, $timeout = 0)
|
||
|
{
|
||
|
return (boolean)$this->db
|
||
|
->createCommand('SELECT GET_LOCK(:name, :timeout)', array(':name' => $name, ':timeout' => $timeout))
|
||
|
->queryScalar();
|
||
|
}
|
||
|
|
||
|
protected function release($name)
|
||
|
{
|
||
|
return (boolean)$this->db
|
||
|
->createCommand('SELECT RELEASE_LOCK(:name)', array(':name' => $name))
|
||
|
->queryScalar();
|
||
|
}
|
||
|
|
||
|
protected function getIsAcquired($name)
|
||
|
{
|
||
|
return (boolean)$this->db
|
||
|
->createCommand('SELECT IS_FREE_LOCK(:name)', array(':name' => $name))
|
||
|
->queryScalar();
|
||
|
}
|
||
|
}
|