%PDF-1.5 %���� ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY
Server IP : 49.231.201.246 / Your IP : 216.73.216.149 Web Server : Apache/2.4.18 (Ubuntu) System : Linux 246 4.4.0-210-generic #242-Ubuntu SMP Fri Apr 16 09:57:56 UTC 2021 x86_64 User : root ( 0) PHP Version : 7.0.33-0ubuntu0.16.04.16 Disable Function : exec,passthru,shell_exec,system,proc_open,popen,pcntl_exec MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /var/www/html/water/vendor/yiisoft/yii2/mutex/ |
Upload File : |
<?php /** * @link http://www.yiiframework.com/ * @copyright Copyright (c) 2008 Yii Software LLC * @license http://www.yiiframework.com/license/ */ namespace yii\mutex; use yii\base\InvalidConfigException; /** * MysqlMutex implements mutex "lock" mechanism via MySQL locks. * * Application configuration example: * * ``` * [ * 'components' => [ * 'db' => [ * 'class' => 'yii\db\Connection', * 'dsn' => 'mysql:host=127.0.0.1;dbname=demo', * ] * 'mutex' => [ * 'class' => 'yii\mutex\MysqlMutex', * ], * ], * ] * ``` * * @see Mutex * * @author resurtm <resurtm@gmail.com> * @since 2.0 */ class MysqlMutex extends DbMutex { /** * Initializes MySQL specific mutex component implementation. * @throws InvalidConfigException if [[db]] is not MySQL connection. */ public function init() { parent::init(); if ($this->db->driverName !== 'mysql') { throw new InvalidConfigException('In order to use MysqlMutex connection must be configured to use MySQL database.'); } } /** * Acquires lock by given name. * @param string $name of the lock to be acquired. * @param int $timeout time (in seconds) to wait for lock to become released. * @return bool acquiring result. * @see http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_get-lock */ protected function acquireLock($name, $timeout = 0) { return $this->db->useMaster(function ($db) use ($name, $timeout) { /** @var \yii\db\Connection $db */ return (bool) $db->createCommand( 'SELECT GET_LOCK(:name, :timeout)', [':name' => $this->hashLockName($name), ':timeout' => $timeout] )->queryScalar(); }); } /** * Releases lock by given name. * @param string $name of the lock to be released. * @return bool release result. * @see http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_release-lock */ protected function releaseLock($name) { return $this->db->useMaster(function ($db) use ($name) { /** @var \yii\db\Connection $db */ return (bool) $db->createCommand( 'SELECT RELEASE_LOCK(:name)', [':name' => $this->hashLockName($name)] )->queryScalar(); }); } /** * Generate hash for lock name to avoid exceeding lock name length limit. * * @param string $name * @return string * @since 2.0.16 * @see https://github.com/yiisoft/yii2/pull/16836 */ protected function hashLockName($name) { return sha1($name); } }