{"id":13462629,"url":"https://github.com/zhaocong6/lock","last_synced_at":"2025-04-05T05:06:52.241Z","repository":{"id":57023142,"uuid":"128615227","full_name":"zhaocong6/lock","owner":"zhaocong6","description":"高性能分布式并发锁, 行为限流","archived":false,"fork":false,"pushed_at":"2020-07-30T03:15:34.000Z","size":67,"stargazers_count":286,"open_issues_count":0,"forks_count":54,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-03-29T04:08:11.071Z","etag":null,"topics":["lock","redis"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zhaocong6.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-04-08T07:57:02.000Z","updated_at":"2024-12-17T14:11:14.000Z","dependencies_parsed_at":"2022-08-23T13:50:20.251Z","dependency_job_id":null,"html_url":"https://github.com/zhaocong6/lock","commit_stats":null,"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhaocong6%2Flock","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhaocong6%2Flock/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhaocong6%2Flock/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhaocong6%2Flock/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zhaocong6","download_url":"https://codeload.github.com/zhaocong6/lock/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247289428,"owners_count":20914464,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["lock","redis"],"created_at":"2024-07-31T12:00:54.137Z","updated_at":"2025-04-05T05:06:52.218Z","avatar_url":"https://github.com/zhaocong6.png","language":"PHP","funding_links":[],"categories":["Uncategorized"],"sub_categories":["Uncategorized"],"readme":"[laravel版本](https://github.com/zhaocong6/laravel-lock)\n\n# 环境要求\n    \n    1.PHP \u003e= 7\n    2.composer\n    3.redis(必须支持lua)\n    4.predis\n    \n# composer 安装\n\n移步 [composer中文网](https://www.phpcomposer.com/).\n# redis 安装\n\n[redis中文网](http://www.redis.net.cn/)\n\n# predis 安装\n    composer require predis/predis\n# lock 安装     \n    composer require nabao/lock\n# 抢占锁\n## lock(callable $callback, string $lock_val)\n多进程并发时, 其中某一个进程得到锁后, 其他进程将被拒绝\n    \n    \n    $callback  \n                回调函数, 可返回值\n    $lock_val\n                锁定值\n# 多参数抢占锁\n## lock(callable $callback, array $lock_vals)\n多进程并发时, 其中某一个进程得到锁后, 其他进程将被拒绝\n    \n    \n    $callback  \n                回调函数, 可返回值\n    $lock_vals\n                锁定值(数组)\n       \n# 队列锁\n\n## queueLock($closure, $lock_val, $max_queue_process = 100, $expiration = 60) \n多进程并发时, 其中某一个进程得到锁后, 其他进程将等待解锁(配置最大等待进程后, 超过等待数量后进程将被拒绝)\n\n    $callback  \n                    回调函数, 可返回值\n    $lock_val\n                    锁定值\n    $max_queue_process        \n                    队列最大等待进程        \n    $expiration\n                    进程最大执行时间   \n\n# 多参数队列锁\n\n## queueLock($closure, $lock_vals, $max_queue_process = 100) \n多进程并发时, 其中某一个进程得到锁后, 其他进程将等待解锁(配置最大等待进程后, 超过等待数量后进程将被拒绝)\n\n    $callback  \n                    回调函数, 可返回值\n    $lock_vals\n                    锁定值(数组)\n    $max_queue_process        \n                    队列最大等待进程       \n\n\n# 使用\n    \n    //静态调用\n    $lock_val = 'user:pay:1';\n    Lock::lock(function($redis){\n       echo 'hello world!';\n    }, $lock_val);\n            \n    //实例化调用\n    $lock = new Lock();\n    $lock_val = 'user:pay:1';\n    $lock-\u003elock(function($redis){\n        echo 'hello world!';\n    }, $lock_val);\n    \n    //多参数锁\n    $lock = new Lock();\n    $lock_val[] = 'user:pay:1';\n    $lock_val[] = 'user:pay:2';\n    $lock-\u003elock(function($redis){\n        echo 'hello world!';\n    }, $lock_val);\n\n# 限流\n\n## isActionAllowed($key, $period, $max_count)\n    \n    $key        限制key\n    $period     限制时间(秒)\n    $max_count  限制时间内最大数量\n    \n# config配置\n## 目前兼容tp.其它框架请实例化传参\n\n     /*\n        |--------------------------------------------------------------------------\n        | lock配置文件\n        |--------------------------------------------------------------------------\n        |\n        |drive 锁驱动(默认redis)\n        |\n        |redis redis驱动配置\n        |   host 地址\n        |   port 端口\n        |\n        |params 参数配置\n        |   max_queue_process  进程池最大进程\n        |   expiration         锁值过期时间\n        |\n        */\n        'lock'=\u003e[\n            'drive' =\u003e  'redis',\n            'redis' =\u003e  [\n                'host'  =\u003e  '127.0.0.1',\n                'port'  =\u003e  '6379'\n            ],\n            'params' =\u003e [\n                'max_queue_process' =\u003e 100\n                'expiration'        =\u003e  5\n            ]\n        ]\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzhaocong6%2Flock","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzhaocong6%2Flock","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzhaocong6%2Flock/lists"}