![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/lib/internal/Customweb/Payment/Update/ |
<?php /** * You are allowed to use this API in your web application. * * Copyright (C) 2018 by customweb GmbH * * This program is licenced under the customweb software licence. With the * purchase or the installation of the software in your application you * accept the licence agreement. The allowed usage is outlined in the * customweb software licence which can be found under * http://www.sellxed.com/en/software-license-agreement * * Any modification or distribution is strictly forbidden. The license * grants you the installation in one application. For multiuse you will need * to purchase further licences at http://www.sellxed.com/shop. * * See the customweb software licence agreement for more details. * */ abstract class Customweb_Payment_Update_AbstractLockProcessor extends Customweb_Payment_Update_AbstractProcessor { const STORAGE_BACKEND_LAST_START_UPDATE_KEY = "last_start_update"; const STORAGE_BACKEND_IS_UPDATE_RUNNING_KEY = "is_update_running"; private $startTime = null; abstract protected function getBackendStorageSpace(); protected function tryLockUpdate() { $this->getStorageBackend()->lock($this->getBackendStorageSpace(), self::STORAGE_BACKEND_IS_UPDATE_RUNNING_KEY, Customweb_Storage_IBackend::EXCLUSIVE_LOCK); $locked = $this->getStorageBackend()->read($this->getBackendStorageSpace(), self::STORAGE_BACKEND_IS_UPDATE_RUNNING_KEY); if ($locked == 'yes') { $time = $this->getStorageBackend()->read($this->getBackendStorageSpace(), self::STORAGE_BACKEND_LAST_START_UPDATE_KEY); if (empty($time)) { $time = 0; } $timeout = Customweb_Util_System::getMaxExecutionTime() * 2; if ($time + $timeout < time()) { $success = true; } else { $success = false; } } else { $success = true; } if ($success) { $this->getStorageBackend()->write($this->getBackendStorageSpace(), self::STORAGE_BACKEND_LAST_START_UPDATE_KEY, time()); $this->getStorageBackend()->write($this->getBackendStorageSpace(), self::STORAGE_BACKEND_IS_UPDATE_RUNNING_KEY, 'yes'); } $this->getStorageBackend()->unlock($this->getBackendStorageSpace(), self::STORAGE_BACKEND_IS_UPDATE_RUNNING_KEY); return $success; } protected function unlockUpdate() { $this->getStorageBackend()->lock($this->getBackendStorageSpace(), self::STORAGE_BACKEND_IS_UPDATE_RUNNING_KEY, Customweb_Storage_IBackend::EXCLUSIVE_LOCK); $this->getStorageBackend()->write($this->getBackendStorageSpace(), self::STORAGE_BACKEND_IS_UPDATE_RUNNING_KEY, 'no'); $this->getStorageBackend()->unlock($this->getBackendStorageSpace(), self::STORAGE_BACKEND_IS_UPDATE_RUNNING_KEY); } /** * Sets the start time. Based on this time the runtime of the process is determine. * * @return Customweb_Payment_Update_AbstractLockProcessor */ public function setStartTime($startTime) { $this->startTime = $startTime; return $this; } /** * Returns the start time of the process. * * @return int */ public function getStartTime() { if ($this->startTime === null) { if (isset($_SERVER['REQUEST_TIME'])) { $this->startTime = $_SERVER['REQUEST_TIME']; } else { $this->startTime = time(); } } return $this->startTime; } }