Magento2 Lock
snowio/magento2-lock
Provides a multi-server lock service, allowing developers to apply mutual exclusion locks to shared resources. Prevents simultaneous access to resources across multiple servers.
Build Tests
Code Quality
Tested on Magento 2.4.8-p3
Recent Test History
Each release is tested against the latest Magento version at that time.
Share This Module's Status
README
Loaded from GitHubMagento 2 Lock
Description
A Magento 2 module which provides a multi-server lock service. This allows developers to apply mutual exclusion locks to shared resources so that they are not accessed simultaneously.
Prerequisites
- PHP 7.0 or newer.
-
magento/frameworkmodule 100 or newer. - Composer (https://getcomposer.org/download/).
Installation
composer require snowio/magento2-lock
php bin/magento setup:upgrade
php bin/magento setup:di:compile
php bin/magento cache:flush
Usage
The lock service can be accessed through dependency injection. Please refer the dependency injection section of the Magento DevDocs for more information on how to use dependency injection.
public boolean LockService::acquireLock(string $name, int $timeout)
Attempt to obtain a lock ####Parameters
-
$lockName: The lock identifier/name -
$timeout: Lock timeout. A negative timeout implies an infinite timeout.
####Return Values A boolean indicating if the the lock was acquired.
public LockService::releaseLock($lockName)
Release the lock
Parameters
-
$lockName: The lock identifier/name
Example
namespace Vendor\Module\Model\Accessors;
class ResourceAccessor
{
private $lockService;
public function __construct(
SnowIO\Lock\Api\LockService $lockService
) {
$this->lockService = $lockService
}
public function access($resource)
{
$lockName = //.. resource lock name
//try acquire the lock
if (!$this->lockService->acquireLock($lockName, 0)) {
//Lock was not acquired ...
}
//Lock was acquired
try {
// Process $resource
} finally {
//release the lock
$this->lockService->releaseLock($lockName);
}
}
}
Applications
- snowio/magento2-product-save-mutex : Uses this module in order to make product save API calls mutually exclusive.
-
snowio/magento2-idempotent-api : Uses this module in order to determine request conflicts whereby 2 or more requests that have the same
X-Message-Group-IDare dispatched.
License
This software is licensed under the MIT License. View the license
This content is fetched directly from the module's GitHub repository. We are not the authors of this content and take no responsibility for its accuracy, completeness, or any consequences arising from its use.