# sync-basalam/1.9.1/includes/Jobs/LockManager.php

ووسلام – همگام سازی ووکامرس و باسلام, version 1.9.1. 47 lines.

- Page: https://pluginprobe.com/plugins/sync-basalam/1.9.1/code/includes/Jobs/LockManager.php
- Raw: https://pluginprobe.com/plugins/sync-basalam/1.9.1/raw/includes/Jobs/LockManager.php
- Modified: 2026-06-30T10:43:26+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/sync-basalam/1.9.1/code/includes/Jobs/LockManager.php#L10-L20`.

```php
<?php

namespace SyncBasalam\Jobs;

defined('ABSPATH') || exit;

class LockManager
{
    public function acquire(string $jobType, int $timeout = 0): bool
    {
        return $this->acquireNamedLock('sync_basalam_job_' . $jobType, $timeout);
    }

    public function release(string $jobType): bool
    {
        return $this->releaseNamedLock('sync_basalam_job_' . $jobType);
    }

    public function acquireGlobalJobsLock(int $timeout = 0): bool
    {
        return $this->acquireNamedLock('sync_basalam_jobs_runner', $timeout);
    }

    public function releaseGlobalJobsLock(): bool
    {
        return $this->releaseNamedLock('sync_basalam_jobs_runner');
    }

    private function acquireNamedLock(string $lockName, int $timeout = 0): bool
    {
        global $wpdb;

        $result = $wpdb->get_var($wpdb->prepare("SELECT GET_LOCK(%s, %d)", $lockName, $timeout));

        return $result === '1';
    }

    private function releaseNamedLock(string $lockName): bool
    {
        global $wpdb;

        $result = $wpdb->get_var($wpdb->prepare("SELECT RELEASE_LOCK(%s)", $lockName));

        return $result === '1';
    }
}

```
