simple-as-fuck/laravel-lock
Composer 安装命令:
composer require simple-as-fuck/laravel-lock
包简介
Laravel integration for symfony/lock.
README 文档
README
Laravel integration for symfony/lock.
Installation
composer require simple-as-fuck/laravel-lock
Support
If any PHP platform requirements in composer.json ends with security support, consider package version as unsupported except last version.
Configuration
Add into your .env_example and configure your environment on server.
LOCK_STORE=semaphore LOCK_PREFIX=null #LOCK_PGSQL_STORE_CONNECTION=null
Supported symfony lock store are only with native blocking lock, because it is fucking effective.
-
LOCK_STORE=semaphoreSemaphoreStore recommended for simple production without application server replication (lock are stored in local ram) -
LOCK_STORE=flockFlockStore recommended for local development, (lock are stored in local filesystem, so it should work everywhere) -
LOCK_STORE=pgsqlPostgreSqlStore recommended for big production with application server replication (lock are stored remotely by postgres database), you can use special database for locks using setting laravel database connection nameLOCK_PGSQL_STORE_CONNECTION=some_postgre_sql_connection_name, by default is used default database connection -
LOCK_PREFIX=nullpackage will use'app.name'config value as lock keys prefix -
LOCK_PREFIX=emptyorLOCK_PREFIX=""env sets prefix to empty string, simply turn off lock keys prefixing -
LOCK_PREFIX="some_prefix"env sets custom prefix and override prefix from application name
⚠ Changing lock configuration is dangerous operation. ⚠
If you need change lock store, you can use environment variables with OLD_ prefix.
OLD_LOCK_STORE=semaphore OLD_LOCK_PREFIX=null #OLD_LOCK_PGSQL_STORE_CONNECTION=null
- For save configuration change copy your current lock configuration
and prefix all environment keys with
OLD_prefix, change basic environment variables with usage of new lock configuration. - Keep your application running with both configurations for a while.
- After all processes with unchanged configuration ends or dies,
remove all environment keys with
OLD_prefix.
⚠ If your change of multiple environment variables is not atomic operation,
you should change variables in specific order. First create variables with OLD_ prefix,
OLD_LOCK_STORE create as last one, second if you need, prepare specific variables for specific store,
third if you need, change LOCK_PREFIX at last if you need, change LOCK_STORE.
While you cleaning OLD_ prefix, remove OLD_LOCK_STORE as first.
Is not recommended run application with old configuration for long time because locking with old store is less effective.
Usage
/** * @var \Illuminate\Contracts\Foundation\Application $app * @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(); } $lock = $lockManager->acquireMultiple(['some_lock_key', 'second_lock_key']); try { //happy run some critical code synchronously } finally { $lock->release(); }
simple-as-fuck/laravel-lock 适用场景与选型建议
simple-as-fuck/laravel-lock 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 127.64k 次下载、GitHub Stars 达 1, 最近一次更新时间为 2021 年 08 月 26 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 simple-as-fuck/laravel-lock 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 simple-as-fuck/laravel-lock 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 127.64k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 9
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: Unlicense
- 更新时间: 2021-08-26