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/ilovecveti.ru/bitrix/modules/calendar/lib/core/base/ |
Upload File : |
<?php namespace Bitrix\Calendar\Core\Base; use Bitrix\Main\Application; use Bitrix\Main\Data\ManagedCache; class Mutex { private string $name; private ManagedCache $cache; public function __construct(string $name) { $this->cache = Application::getInstance()->getManagedCache(); $this->name = 'calendar_sync_' . $name . '_mutex'; } public function __destruct() { // $this->unlock(); } /** * @param int $lockTime Delta from now in seconds * * @return bool */ public function lock(int $lockTime = 3600): bool { $currentTime = time(); if ($this->cache->read(1800, $this->name)) { $value = $this->cache->get($this->name); } if (!empty($value) && $value > $currentTime) { return false; } $this->cache->setImmediate($this->name, $currentTime + $lockTime); return true; } /** * @return bool */ public function unlock(): bool { $this->cache->setImmediate($this->name, time()); $this->cache->clean($this->name); return true; } }