PluginProbe ʕ •ᴥ•ʔ
Matomo Analytics – Powerful, Privacy-First Insights for WordPress / 5.0.3
Matomo Analytics – Powerful, Privacy-First Insights for WordPress v5.0.3
5.12.1 5.12.0 5.11.1 5.11.0 5.10.2 5.10.1 trunk 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.2 1.1.3 1.2.0 1.3.0 1.3.1 1.3.2 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.1.0 4.1.1 4.1.2 4.1.3 4.10.0 4.11.0 4.12.0 4.13.0 4.13.2 4.13.3 4.13.4 4.13.5 4.14.0 4.14.1 4.14.2 4.15.0 4.15.1 4.15.2 4.15.3 4.2.0 4.3.0 4.3.1 4.4.1 4.4.2 4.5.0 4.6.0 5.0.1 5.0.2 5.0.3 5.0.4 5.0.5 5.0.6 5.0.7 5.0.8 5.1.0 5.1.1 5.1.2 5.1.3 5.1.4 5.1.5 5.1.6 5.1.7 5.10.0 5.2.0 5.2.1 5.2.2 5.3.0 5.3.1 5.3.2 5.3.3 5.6.0 5.6.1 5.7.0 5.7.1 5.8.0 5.8.1 5.8.2
matomo / app / core / ArchiveProcessor / LoaderLock.php
matomo / app / core / ArchiveProcessor Last commit date
ArchivingStatus.php 2 years ago Loader.php 2 years ago LoaderLock.php 2 years ago Parameters.php 2 years ago PluginsArchiver.php 2 years ago PluginsArchiverException.php 2 years ago Record.php 2 years ago RecordBuilder.php 2 years ago Rules.php 2 years ago
LoaderLock.php
57 lines
1 <?php
2
3 /**
4 * Matomo - free/libre analytics platform
5 *
6 * @link https://matomo.org
7 * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
8 *
9 */
10 namespace Piwik\ArchiveProcessor;
11
12 use Piwik\Db;
13 use Piwik\SettingsPiwik;
14 class LoaderLock
15 {
16 const MAX_LEN_LOCK_NAME = 64;
17 const MAX_LOCK_TIME = 60;
18 //in seconds
19 protected $id;
20 /**
21 * @param string $id
22 * @throws \Exception
23 */
24 public function __construct($id)
25 {
26 // instanceId is needed for multi tenant database solution
27 $id = SettingsPiwik::getPiwikInstanceId() . $id;
28 if (mb_strlen($id) >= self::MAX_LEN_LOCK_NAME) {
29 //convert ot prefix and md5 full length
30 $id = mb_substr($id, 0, 32) . md5($id);
31 }
32 $this->id = $id;
33 }
34 public function setLock()
35 {
36 Db::fetchOne('SELECT GET_LOCK(?,?)', array($this->id, self::MAX_LOCK_TIME));
37 }
38 public function unLock()
39 {
40 Db::query('DO RELEASE_LOCK(?)', array($this->id));
41 }
42 public function getId()
43 {
44 return $this->id;
45 }
46 /**
47 * @description check if the lock is available to user
48 * @param string $key
49 * @return bool
50 * @throws \Exception
51 */
52 public static function isLockAvailable($key)
53 {
54 return (bool) Db::fetchOne('SELECT IS_FREE_LOCK(?)', [$key]);
55 }
56 }
57