• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/classes/general/update_b24.php
  • Класс: CB24Updater
  • Вызов: CB24Updater::Lock
public function Lock()
{
	global $DB;

	$uniq = $this->serverUniqID;

	if ($DB->type == "MYSQL")
	{
		$dbLock = $DB->Query("SELECT GET_LOCK('".$uniq."_DBUpdater', 0) as L", false, "File: ".__FILE__."
Line: ".__LINE__); $arLock = $dbLock->Fetch(); if ($arLock["L"] == "1") return true; else return false; } elseif ($DB->type == "ORACLE") { $dbLock = $DB->Query(" declare my_lock_id number; my_result number; lock_failed exception; pragma exception_init(lock_failed, -54); begin my_lock_id:=dbms_utility.get_hash_value(to_char('".$uniq."_DBUpdater'), 0, 1024); my_result:=dbms_lock.request(my_lock_id, dbms_lock.x_mode, 0, true); -- Return value: -- 0 - success -- 1 - timeout -- 2 - deadlock -- 3 - parameter error -- 4 - already own lock specified by 'id' or 'lockhandle' -- 5 - illegal lockhandle if(my_result<>0 and my_result<>4)then raise lock_failed; end if; end; ", true); return ($dbLock !== false); } else { $i = 60; $DB->Query("DELETE FROM b_option WHERE MODULE_ID = 'main' AND NAME = '".$uniq."_DBUpdater' AND SITE_ID IS NULL AND DATEDIFF(SECOND, CONVERT(DATETIME, DESCRIPTION), GETDATE()) > ".$i, false, "File: ".__FILE__."
Line: ".__LINE__); $DB->Query("SET LOCK_TIMEOUT 1", false, "File: ".__FILE__."
Line: ".__LINE__); $dbLock = $DB->Query("INSERT INTO b_option(MODULE_ID, NAME, SITE_ID, VALUE, DESCRIPTION) VALUES ('main', '".$uniq."_DBUpdater', NULL, NULL, CONVERT(VARCHAR(128), GETDATE()))", true); $DB->Query("SET LOCK_TIMEOUT -1", false, "File: ".__FILE__."
Line: ".__LINE__); return ($dbLock !== false); } }