PHPackages                             ltxiong/locks - 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. ltxiong/locks

ActiveLibrary

ltxiong/locks
=============

基于php对常见的分布式锁方案封装

14PHP

Since Aug 9Pushed 4y ago1 watchersCompare

[ Source](https://github.com/ltxiong/locks)[ Packagist](https://packagist.org/packages/ltxiong/locks)[ RSS](/packages/ltxiong-locks/feed)WikiDiscussions master Synced 1w ago

READMEChangelogDependenciesVersions (1)Used By (0)

locks
=====

[](#locks)

基于php对常见的分布式锁方案封装，包括基于 Redis、ZooKeeper、Etcd进行实现 关于锁基础知识，可以阅读美团技术文章的总结：

基于ETCD相应的操作api如下示例：

API接口响应通用参数列表

```
etcd restful api接口正常响应 header 内容参数列表如下：
--cluster_id  生成响应的集群的ID。
--member_id  生成响应的成员的ID。
--revision  生成响应时键值存储的 修订本，也就是版本号，该版本号全局唯一，操作时可指定相应的版本进行操作
--raft_term  生成响应时成员的Raft术语。

etcd restful api接口异常 响应 内容参数列表如下：
--error  错误的具体内容
--message 错误的消息明细
--code  错误码

```

详细的请求参数列表见文档： 关于基于 etcd 的锁机制实现方案可以参考： [https://segmentfault.com/a/1190000021603215?utm\_source=tag-newest](https://segmentfault.com/a/1190000021603215?utm_source=tag-newest)

// 创建一个带过期时间的租约授权，参数必需为大写，并且租约ID自定义，如不自定义，租约ID通过响应结果返回的值进行获取 curl  -X POST -d '{"TTL": 60, "ID": 1591600570}' 响应结果如下： { "header":{ "cluster\_id":"5588143592968007030", "member\_id":"1315068946984511305", "revision":"28", "raft\_term":"9" }, "ID":"1234567", "TTL":"60" }

// 加锁/释放锁请求的api参考： // 加锁/释放锁参数列表参考： [https://etcd.io/docs/v3.3.12/dev-guide/api\_concurrency\_reference\_v3/](https://etcd.io/docs/v3.3.12/dev-guide/api_concurrency_reference_v3/)

// 加锁 curl  -X POST -d '{"name": "YWJj", "lease": 1591600570}' 响应结果如下： { "header":{ "cluster\_id":"5588143592968007030", "member\_id":"1315068946984511305", "revision":"28", "raft\_term":"9" }, "key":"YWJjLzVlZGRlNWJh" }

// 释放锁 curl  -X POST -d '{"key": "YWJjLzVlZGRlNWJh"}' 响应结果如下： { "header":{ "cluster\_id":"5588143592968007030", "member\_id":"1315068946984511305", "revision":"29", "raft\_term":"9" } }

// 通过key-value方式写入一个带过期时间的租约key-value curl  -X POST -d '{"key": "YWJj", "value": "bHR4aW9uZzEyMzQ=", "lease": 1591600570}' curl  -X POST -d '{"key": "YWJj", "value": "a2tr", "lease": 1591600570}' 响应结果如下： { "header":{ "cluster\_id":"5588143592968007030", "member\_id":"1315068946984511305", "revision":"29", "raft\_term":"9" } }

// 通过kv/range 查询 相应key的结果 curl -L  -X POST -d '{"key": "YWJj"}' // 获取单条记录，并且只需要返回相应的keys而不返回值 curl -L  -X POST -d '{"key": "YWJj", "limit": 1, "keys\_only": true}' 响应结果如下： { "header":{ "cluster\_id":"5588143592968007030", "member\_id":"1315068946984511305", "revision":"29", "raft\_term":"9" }, "kvs":\[ { "key":"YWJj", "create\_revision":"29", "mod\_revision":"29", "version":"1", "value":"bHR4aW9uZzEyMzQ=", "lease":"1234567" } \], "count":"1" }

// 取消租约，注意参数的大小写问题，以下2种方式完全一样 curl -L  -X POST -d '{"ID": "1591600570"}' curl -L  -X POST -d '{"ID": "1591600570"}'

如要取消的租约存在，响应结果如下： { "header":{ "cluster\_id":"5588143592968007030", "member\_id":"1315068946984511305", "revision":"30", "raft\_term":"9" } } 如要取消的租约不存在，响应结果如下： { "error":"etcdserver: requested lease not found", "message":"etcdserver: requested lease not found", "code":5 }

// 删除相应的key curl -L  -X POST -d '{"key": "YWJj"}' 响应结果如下： { "header":{ "cluster\_id":"5588143592968007030", "member\_id":"1315068946984511305", "revision":"30", "raft\_term":"9" }, "deleted":"1" }

###  Health Score

16

—

LowBetter than 5% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity5

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity29

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% 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.

### Community

Maintainers

![](https://www.gravatar.com/avatar/cae23c579f0cf281de5fb6c4211e35276706a020721e6863a6bc52d275e55ddc?d=identicon)[ltxiong2020](/maintainers/ltxiong2020)

---

Top Contributors

[![ltxiong](https://avatars.githubusercontent.com/u/7168001?v=4)](https://github.com/ltxiong "ltxiong (13 commits)")

### Embed Badge

![Health badge](/badges/ltxiong-locks/health.svg)

```
[![Health](https://phpackages.com/badges/ltxiong-locks/health.svg)](https://phpackages.com/packages/ltxiong-locks)
```

PHPackages © 2026

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