![]() 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/mautic.corals.io/vendor/malkusch/lock/classes/mutex/ |
<?php namespace malkusch\lock\mutex; class PgAdvisoryLockMutex extends LockMutex { /** * @var \PDO */ private $pdo; /** * @var int */ private $key1; /** * @var int */ private $key2; /** * @throws \RuntimeException */ public function __construct(\PDO $PDO, $name) { $this->pdo = $PDO; $hashed_name = hash("sha256", $name, true); if (false === $hashed_name) { throw new \RuntimeException("Unable to hash the key, sha256 algorithm is not supported."); } list($bytes1, $bytes2) = str_split($hashed_name, 4); $this->key1 = unpack("i", $bytes1)[1]; $this->key2 = unpack("i", $bytes2)[1]; } public function lock() { $statement = $this->pdo->prepare("SELECT pg_advisory_lock(?,?)"); $statement->execute([ $this->key1, $this->key2, ]); } public function unlock() { $statement = $this->pdo->prepare("SELECT pg_advisory_unlock(?,?)"); $statement->execute([ $this->key1, $this->key2 ]); } }