Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/yandex.market/lib/trading/state/ |
Upload File : |
<?php namespace Yandex\Market\Trading\State; use Bitrix\Main; use Yandex\Market\Reference\Concerns; class Locker { use Concerns\HasMessage; protected $sign; protected $timeout; protected $locked = false; public function __construct($sign, $timeout = 30) { $this->sign = (string)$sign; $this->timeout = (int)$timeout; } public function lock() { if (!$this->supports()) { return; } $sql = sprintf( "SELECT GET_LOCK('%s', %d)", $this->sign, $this->timeout ); $lock = $this->connection()->queryScalar($sql); if ((string)$lock === '0') { throw new Main\SystemException(self::getMessage('REJECTED')); } $this->locked = true; } public function release() { if (!$this->locked || !$this->supports()) { return; } $sql = sprintf( "DO RELEASE_LOCK('%s')", $this->sign ); $this->connection()->queryExecute($sql); $this->locked = false; } protected function supports() { return $this->connection() instanceof Main\DB\MysqlCommonConnection; } protected function connection() { return Main\Application::getConnection(); } }