锁-并发处理

在实际的开发中我们经常会碰到并发的问题,这时候根据业务场景可以使用不同的方式去处理并发的问题。比如使用锁机制、队列的使用等。在CmlPHP要使用队列可以参考队列服务。同时CmlPHP也提供了易于使用的锁功能。

  • 在控制器中使用锁$this->locker()或者\Cml\Lock::getLocker()获取锁实例
  • 在Server中使用锁$this->locker()或者\Cml\Lock::getLocker()获取锁实例
  • 其它地方统一使用\Cml\Lock::getLocker()获取锁实例
锁实例有lock()unlock()方法//lock如果未unlock会在脚本执行结束统一解锁

v2.7开始在入口中配置使用的锁\Cml::getContainer()->singleton('cml_lock', \Cml\Lock\Redis::class);

内置\Cml\Lock\File::class|\Cml\Lock\Redis::class|\Cml\Lock\Memcache::class三种内置的redis锁跟/memcache锁 跟缓存服务挂钩,可以通过配置文件中'locker_use_cache' => 'default_cache'配置,默认使用default_cache也可以在获取锁实例的时候手动指定如:\Cml\Lock::getLocker('default_cache')指定使用default_cache中配置的缓存

原文: http://doc.cmlphp.com/devintro/lock.html