首頁 > php教程 > php手册 > 基于memcached的php锁机制实现

基于memcached的php锁机制实现

WBOY
發布: 2016-06-06 19:57:43
原創
849 人瀏覽過

PHP处理大规模并发,特别是恶意辅助工具发送恶意请求的情况下,这时候就需要用到锁机制。 常备恶意请求的接口一般都会操作db,如果db不支持事务或者db和PHP之间有第三方插件的话,很容易出现多个php接口返回成功的现象。 php有一种基于文件的锁机制,fblock

PHP处理大规模并发,特别是恶意辅助工具发送恶意请求的情况下,这时候就需要用到锁机制。

常备恶意请求的接口一般都会操作db,如果db不支持事务或者db和PHP之间有第三方插件的话,很容易出现多个php接口返回成功的现象。

php有一种基于文件的锁机制,fblock,但是对于有很多web机的应用,php接口会负载均衡到所有的web机,只能做对同一台web机的锁机制,并且非常耗资源。

现在的锁机制就需要一个全局可以访问可写的变量。
此时有两种选择,数据库,memcached。

为了减轻负担,使用memcached。  


锁定方法: memcached并没有提供锁定某一个key的方法,可以通过其他方法来实现锁定。最常用的是用add方法。例如,我们要更新一个key,可以先王 memcached里面add一个叫lock_key的键值,如果add成功,就说明锁定上了,否则,说明memcached里面已经有lock_key 这个键值,有其他程序在锁定这个key了


实现php自由锁:

1加锁(设置memcached的最大过期时间,比如5s,避免加锁后忘记解锁)

addmemcached

2解锁

detele


使用apache自带的压力测试工具 

./ab -n1000 -c100 http://*****

每秒钟一千个请求,一百个并发,锁机制工作正常。

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門推薦
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板