php使用apc来实现mutex锁

最近的工作需要在cache层加一个lock的机制,google了一些资料发现apc没有实现(好像eAccelerator有,没用过),只有自己整一个,用apc实现也比较简单

protected static function isMutex($key)
{
  if (ApcCache::exists("MUTEX_" . $key)) return true;
  return false;
}


protected static function lock($key)
{ 
  return ApcCache::add("MUTEX_" . $key, true, 1);
}


protected static function unlock($key)
{ 
  return ApcCache::remove("MUTEX_" . $key);
}

底层有个对apccache的封装,使用一个1秒的缓存来测试mutex

使用一个简单的python脚本测试了下,实现能够满足要求

#!/usr/bin/env python
#-*- coding: utf-8 -*-

from multiprocessing import Process
import urllib

def read(i):
#	print i,"in read"
	f = urllib.urlopen("http://help/index/testmulti?param=%s" % i)
	data = f.read()
	print data

if __name__ == '__main__':
	p = []
	for i in range(300):
		p.append(Process(target=read, args=(i,)))
		
	for c in p:
		c.start()


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值