webonaute / doctrine-datalocking-bundle
Lock a list of object of the same entity to be executed by a single processor. When the lock is aquire, the lock ID generated can be use by a processor to execute action on that locked list.
Installs: 20 249
Dependents: 0
Suggesters: 0
Security: 0
Stars: 2
Watchers: 3
Forks: 0
Open Issues: 0
Type:symfony-bundle
Requires
- php: >=8.0
- doctrine/doctrine-bundle: ^1.8|^2.0
- doctrine/orm: ^2.0
- symfony/config: ^5.0
- symfony/console: ^5.0
- symfony/dependency-injection: ^5.0
- symfony/framework-bundle: ^5.0
Requires (Dev)
- phpunit/phpunit: ^6.0|^7.0
- symfony/browser-kit: ^5.0
- symfony/console: ^5.0
- symfony/monolog-bundle: ^5.0
- symfony/phpunit-bridge: ^5.0
- symfony/profiler-pack: ^1.0
- symfony/twig-bundle: ^5.0
This package is auto-updated.
Last update: 2024-10-29 05:46:54 UTC
README
About
Lock a list of object of the same entity to be executed by a single processor. When the lock is aquire, the lock ID generated can be use by a processor to execute action on that locked list.
Branches
Installation
This bundle is available via composer, find it on packagist.
Run :
composer require webonaute/doctrine-datalocking-bundle 1.0-dev
Documentation
Configure Entity
Add this snipped code to your entity.
use Webonaute\DoctrineDataLockingBundle\Entity\ProcessLock;
...
/**
* @var ProcessLock
*
* @ORM\Embedded(class=ProcessLock::class)
*/
private $processLock;
...
public function __construct()
{
...
$this->processLock = new ProcessLock();
}
/**
* @return ProcessLock
*/
public function getProcessLock(): ProcessLock
{
return $this->processLock;
}
Lock data who are due.
while (null !== $lockId = $dataLockerService->lock(Entity::class, 500, $extraWhere, $lockAt)) {
$this->queue->push($lockId);
}
Get objects related to one lock ID.
$lockedEntities = $dataLockerService->findLocked(Entity::class, $lockId);
Unlock object after usage.
This will simply unlock the object. To consume the entity object, use deleteLocked method.
$lockedEntities = $dataLockerService->unlock(Entity::class, $lockId);
Consume object after usage with deleteLocked
This method will consume the entity object by deleting it from the database.
$lockedEntities = $dataLockerService->deleteLocked(Entity::class, $lockId);
License
See LICENSE.