并发下常见的加锁及锁的PHP具体实现
2015-09-22 16:10
627 查看
并发下常见的加锁及锁的PHP具体实现
在最近的项目中有这样的场景1.生成文件的时候,由于多用户都有权限进行生成,防止并发下,导致生成的结果出现错误,需要对生成的过程进行加锁,只容许一个用户在一个时间内进行操作,这个时候就需要用到锁了,将这个操作过程锁起来.
2.在用了cache的时候,cache失效可能导致瞬间的多数并发请求穿透到数据库此时也可以得需要用锁在同一并发的过程中将这个操作锁定.
针对以上的2种情况,现在的解决方法是对处理过程进行锁机制,通过PHP实现如下
用到了Eaccelerator的内存锁 和 文件锁,原理如下
判断系统中是否安了EAccelerator 如果有则使用内存锁,如果不存在,则进行文件锁
根据带入的key的不同可以实现多个锁直接的并行处理,类似Innodb的行级锁
使用如下:
$lock = new CacheLock('key_name');
$lock->lock();
//logic here
$lock->unlock();
//使用过程中需要注意下文件锁所在路径需要有写权限.
具体类如下:
原文地址:http://www.cnblogs.com/scotoma/archive/2010/09/26/1836312.html
相关文章推荐
- win2008r2 ftp
- PHP+MYSQL+AJAX实现每日签到功能
- ThinkPHP+uploadify+upload+PHPExcel 无刷新导入数据
- 关于php开发的一些总结
- lnmp安装php错误解决
- 实现RTP协议的H.264视频传输系统
- 【TCO 2013】Litpanels
- PHP编程效率的20个要点
- PHP undefined function curl_init()解决方法
- PHP5.6.6上运行 ecshop 2.7.3常见问题处理
- php设置页面超时时间解决方法
- yii rules使用获取error信息
- PHP Framework - ThinkPHP
- PHP Framework - DooPHP
- 关于php的思考
- phpwind 会员添加字段操作过程
- PHP Framework - Laravel
- PHP Framework - CodeIgniter
- 利用ContentProvider读写短消息。
- PHP Framework - Yii