简单到极致 / laravel-lock
此包最新版本(0.2.11)没有提供许可信息。
Laravel 对 symfony/lock 的集成。
0.2.11
2024-03-17 21:17 UTC
Requires
- php: ^8.1
- illuminate/contracts: ^8.0|^9.0|^10.0|^11.0
- illuminate/database: ^8.0|^9.0|^10.0|^11.0
- illuminate/support: ^8.0|^9.0|^10.0|^11.0
- simple-as-fuck/php-validator: ^0.1.0|^0.2.0|^0.3.0|^0.4.0|^0.5.0|^0.6.0
- symfony/lock: ^5.4.7|^6.0.7|^7.0
Requires (Dev)
README
Laravel 对 symfony/lock 的集成。
安装
composer require simple-as-fuck/laravel-lock
配置
将其添加到 .env_example 中,并在服务器上配置环境。
LOCK_STORE=semaphore
支持
如果 composer.json 中列出的任何 PHP 平台要求以安全支持结束,请将包版本视为不受支持,除非是最后一个版本。
支持的 symfony lock 存储只支持本地阻塞锁,因为它非常有效。
-
semaphore
SemaphoreStore 建议用于简单的生产环境,没有应用服务器复制(锁存储在本地 RAM 中) -
flock
FlockStore 建议用于本地开发,(锁存储在本地文件系统中,因此应该在任何地方都适用) -
pgsql
PostgreSqlStore 建议用于具有应用服务器复制的的大型生产环境(锁由 PostgreSQL 数据库远程存储),你可以使用特殊数据库来存储锁,通过设置 Laravel 数据库连接名称LOCK_PGSQL_STORE_CONNECTION=some_postgers_connection_name
,默认使用默认数据库连接
用法
/** @var \SimpleAsFuck\LaravelLock\Service\LockManager $lockManager */ $lockManager = app()->make(\SimpleAsFuck\LaravelLock\Service\LockManager::class); $lock = $lockManager->acquire('some_lock_key'); try { //happy run some critical code synchronously } finally { $lock->release(); }