2017 © Pedro Peláez
 

library lock

并发抢占锁, 队列锁

image

nabao/lock

并发抢占锁, 队列锁

  • Saturday, July 28, 2018
  • by zhaocong
  • Repository
  • 3 Watchers
  • 102 Stars
  • 99 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 12 Forks
  • 0 Open issues
  • 8 Versions
  • 48 % Grown

The README.md

laravel版本, (*1)

环境要求

1.PHP >= 7
2.composer
3.redis(必须支持lua)
4.predis

composer 安装

移步 composer中文网., (*2)

redis 安装

redis中文网, (*3)

predis 安装

composer require predis/predis

lock 安装

composer require nabao/lock

抢占锁

lock(callable $callback, string $lock_val)

多进程并发时, 其中某一个进程得到锁后, 其他进程将被拒绝, (*4)

$callback  
            回调函数, 可返回值
$lock_val
            锁定值

多参数抢占锁

lock(callable $callback, array $lock_vals)

多进程并发时, 其中某一个进程得到锁后, 其他进程将被拒绝, (*5)

$callback  
            回调函数, 可返回值
$lock_vals
            锁定值(数组)

队列锁

queueLock($closure, $lock_val, $max_queue_process = 100, $expiration = 60)

多进程并发时, 其中某一个进程得到锁后, 其他进程将等待解锁(配置最大等待进程后, 超过等待数量后进程将被拒绝), (*6)

$callback  
                回调函数, 可返回值
$lock_val
                锁定值
$max_queue_process        
                队列最大等待进程        
$expiration
                进程最大执行时间   

多参数队列锁

queueLock($closure, $lock_vals, $max_queue_process = 100)

多进程并发时, 其中某一个进程得到锁后, 其他进程将等待解锁(配置最大等待进程后, 超过等待数量后进程将被拒绝), (*7)

$callback  
                回调函数, 可返回值
$lock_vals
                锁定值(数组)
$max_queue_process        
                队列最大等待进程       

使用

//静态调用
$lock_val = 'user:pay:1';
Lock::lock(function($redis){
   echo 'hello world!';
}, $lock_val);

//实例化调用
$lock = new Lock();
$lock_val = 'user:pay:1';
$lock->lock(function($redis){
    echo 'hello world!';
}, $lock_val);

//多参数锁
$lock = new Lock();
$lock_val[] = 'user:pay:1';
$lock_val[] = 'user:pay:2';
$lock->lock(function($redis){
    echo 'hello world!';
}, $lock_val);

限流

isActionAllowed($key, $period, $max_count)

$key        限制key
$period     限制时间(秒)
$max_count  限制时间内最大数量

config配置

目前兼容tp.其它框架请实例化传参

 /*
    |--------------------------------------------------------------------------
    | lock配置文件
    |--------------------------------------------------------------------------
    |
    |drive 锁驱动(默认redis)
    |
    |redis redis驱动配置
    |   host 地址
    |   port 端口
    |
    |params 参数配置
    |   max_queue_process  进程池最大进程
    |   expiration         锁值过期时间
    |
    */
    'lock'=>[
        'drive' =>  'redis',
        'redis' =>  [
            'host'  =>  '127.0.0.1',
            'port'  =>  '6379'
        ],
        'params' => [
            'max_queue_process' => 100
            'expiration'        =>  5
        ]
    ]

The Versions

28/07 2018

dev-master

9999999-dev

并发抢占锁, 队列锁

  Sources   Download

MIT

The Requires

 

by Avatar zhaocong

25/06 2018

1.1.4

1.1.4.0

并发抢占锁, 队列锁

  Sources   Download

MIT

The Requires

 

by Avatar zhaocong

11/06 2018

1.1.3

1.1.3.0

并发抢占锁, 队列锁

  Sources   Download

MIT

The Requires

 

by Avatar zhaocong

25/05 2018

1.1

1.1.0.0

并发抢占锁, 队列锁

  Sources   Download

MIT

The Requires

 

by Avatar zhaocong

25/05 2018

1.1.2

1.1.2.0

并发抢占锁, 队列锁

  Sources   Download

MIT

The Requires

 

by Avatar zhaocong

08/05 2018

1.0

1.0.0.0

并发抢占锁, 队列锁

  Sources   Download

MIT

The Requires

 

by Avatar zhaocong

30/04 2018

0.2

0.2.0.0

并发抢占锁, 队列锁

  Sources   Download

MIT

The Requires

 

by Avatar zhaocong

12/04 2018

0.1

0.1.0.0

并发抢占锁, 队列锁

  Sources   Download

MIT

The Requires

 

by Avatar zhaocong