PHPackages                             baraja-core/lock - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Queues &amp; Workers](/categories/queues)
4. /
5. baraja-core/lock

ActiveLibrary[Queues &amp; Workers](/categories/queues)

baraja-core/lock
================

Simple PHP function lock system.

v1.0.2(4y ago)2131.7k↓18.9%16PHPPHP ^8.0

Since Aug 1Pushed 3y ago1 watchersCompare

[ Source](https://github.com/baraja-core/lock)[ Packagist](https://packagist.org/packages/baraja-core/lock)[ Docs](https://github.com/baraja-core/lock)[ RSS](/packages/baraja-core-lock/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (3)Dependencies (5)Versions (4)Used By (6)

Simple PHP lock
===============

[](#simple-php-lock)

A simple library for processing and clearing locks in your PHP application. No dependencies are required for use, everything is done in native PHP.

Idea
----

[](#idea)

Simple and efficient lock management in your PHP application.

To use it, just start a lock (you can use many different locks at the same time), wait for it to unlock, process any competing tasks, and then let the lock expire or unlock manually.

If you let the lock expire naturally, it will be automatically cleared via the Garbage collector component.

📦 Installation
--------------

[](#-installation)

It's best to use [Composer](https://getcomposer.org) for installation, and you can also find the package on [Packagist](https://packagist.org/packages/baraja-core/lock) and [GitHub](https://github.com/baraja-core/lock).

To install, simply use the command:

```
$ composer require baraja-core/lock

```

How to use
----------

[](#how-to-use)

Simply request a static `Lock` service over which you can perform the following operations:

```
// start no-name transaction
Lock::startTransaction();

if (Lock::isTransactionRunning()) {
    // Transaction is running...
}

// Stop no-name transaction
Lock::stopTransaction();
```

By default, you should always stop a transaction at the end of an operation using the `stopTransaction()` method. If you do not terminate the transaction, it will be terminated automatically when the protection limit expires.

The guard limit cannot be disabled and is used for cases where stopping a transaction fails for any reason, to avoid completely breaking the application. The application can always get itself out of a broken lock.

Named transactions and set your own limit
-----------------------------------------

[](#named-transactions-and-set-your-own-limit)

In the case of competing processes, we first need to wait for the previous transaction to complete.

To do this, it is ideal to use the `wait()` method, which automatically waits for the previous transaction to complete.

After waiting for a free time slot, we create our own transaction in the current process, which we manually terminate later.

```
Lock::wait('order-number');

// start transaction "order-number" for 5 seconds
Lock::startTransaction('order-number', 5000);

// run something special...

// stop transaction
Lock::stopTransaction('order-number');
```

If the transaction is not manually stopped by the `stopTransaction()` method, it will be automatically terminated after the protection interval expires.

If stopping the transaction fails directly at the system level for some reason (for example, you do not have the rights to delete the transaction file), the `wait()` method will drop the request after 30 seconds at the latest (the interval can be set), even if the lock still exists.

This ensures that the application never gets completely stuck.

📄 License
---------

[](#-license)

`baraja-core/lock` is licensed under the MIT license. See the [LICENSE](https://github.com/baraja-core/lock/blob/master/LICENSE) file for more details.

###  Health Score

34

—

LowBetter than 77% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity31

Limited adoption so far

Community17

Small or concentrated contributor base

Maturity58

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 91.7% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~93 days

Total

3

Last Release

1557d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/3382204?v=4)[baraja](/maintainers/baraja)[@baraja](https://github.com/baraja)

---

Top Contributors

[![janbarasek](https://avatars.githubusercontent.com/u/4738758?v=4)](https://github.com/janbarasek "janbarasek (11 commits)")[![Langriklol](https://avatars.githubusercontent.com/u/20239181?v=4)](https://github.com/Langriklol "Langriklol (1 commits)")

---

Tags

lockphpphp-lockqueuesafe

###  Code Quality

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/baraja-core-lock/health.svg)

```
[![Health](https://phpackages.com/badges/baraja-core-lock/health.svg)](https://phpackages.com/packages/baraja-core-lock)
```

###  Alternatives

[league/geotools

Geo-related tools PHP 7.3+ library

1.4k5.3M26](/packages/league-geotools)[amphp/parser

A generator parser to make streaming parsers simple.

14952.8M16](/packages/amphp-parser)[amphp/serialization

Serialization tools for IPC and data storage in PHP.

13451.1M18](/packages/amphp-serialization)[enqueue/enqueue

Message Queue Library

19820.0M56](/packages/enqueue-enqueue)[deliciousbrains/wp-background-processing

WP Background Processing can be used to fire off non-blocking asynchronous requests or as a background processing tool, allowing you to queue tasks.

1.1k409.8k6](/packages/deliciousbrains-wp-background-processing)[react/async

Async utilities and fibers for ReactPHP

2238.8M170](/packages/react-async)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
