PluginProbe
ووسلام – همگام سازی ووکامرس و باسلام / 1.10.19
ووسلام – همگام سازی ووکامرس و باسلام v1.10.19
1.10.19 1.10.20 1.10.18 1.10.17 1.10.15 1.10.14 1.10.13 1.10.12 1.10.10 1.10.9 1.10.8 1.10.7 1.10.6 1.10.5 1.10.4 1.10.3 1.10.2 1.10.1 1.10.0 1.9.2 1.9.1 1.9.0 1.8.8 1.8.5 1.8.6 All 53 releases
← All changes | includes/Jobs/LockManager.php +48 -28 1.8.51.10.19 View file →
@@ -1,28 +1,48 @@
1 -<?php
2 -
3 -namespace SyncBasalam\Jobs;
4 -
5 -defined('ABSPATH') || exit;
6 -
7 -class LockManager
8 -{
9 - public function acquire(string $jobType, int $timeout = 0): bool
10 - {
11 - global $wpdb;
12 -
13 - $lockName = 'sync_basalam_job_' . $jobType;
14 - $result = $wpdb->get_var($wpdb->prepare("SELECT GET_LOCK(%s, %d)", $lockName, $timeout));
15 -
16 - return $result === '1';
17 - }
18 -
19 - public function release(string $jobType): bool
20 - {
21 - global $wpdb;
22 -
23 - $lockName = 'sync_basalam_job_' . $jobType;
24 - $result = $wpdb->get_var($wpdb->prepare("SELECT RELEASE_LOCK(%s)", $lockName));
25 -
26 - return $result === '1';
27 - }
28 -}
1 +<?php
2 +
3 +namespace SyncBasalam\Jobs;
4 +
5 +defined('ABSPATH') || exit;
6 +
7 +class LockManager
8 +{
9 + public function acquire(string $jobType, int $timeout = 0): bool
10 + {
11 + return $this->acquireNamedLock('sync_basalam_job_' . $jobType, $timeout);
12 + }
13 +
14 + public function release(string $jobType): bool
15 + {
16 + return $this->releaseNamedLock('sync_basalam_job_' . $jobType);
17 + }
18 +
19 + public function acquireGlobalJobsLock(int $timeout = 0): bool
20 + {
21 + return $this->acquireNamedLock('sync_basalam_jobs_runner', $timeout);
22 + }
23 +
24 + public function releaseGlobalJobsLock(): bool
25 + {
26 + return $this->releaseNamedLock('sync_basalam_jobs_runner');
27 + }
28 +
29 + private function acquireNamedLock(string $lockName, int $timeout = 0): bool
30 + {
31 + global $wpdb;
32 +
33 + // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching -- Named MySQL advisory lock; no object cache applicable.
34 + $result = $wpdb->get_var($wpdb->prepare("SELECT GET_LOCK(%s, %d)", $lockName, $timeout));
35 +
36 + return $result === '1';
37 + }
38 +
39 + private function releaseNamedLock(string $lockName): bool
40 + {
41 + global $wpdb;
42 +
43 + // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching -- Named MySQL advisory lock; no object cache applicable.
44 + $result = $wpdb->get_var($wpdb->prepare("SELECT RELEASE_LOCK(%s)", $lockName));
45 +
46 + return $result === '1';
47 + }
48 +}