php中的hashmap的用法,应用程序上下文php中的hashmap

这篇博客介绍了在PHP中使用Zend和APC进行缓存存储的方法,特别强调了如何处理并发问题。作者建议使用共享内存如Zend_SHM_Cache和APC来存储数据,并通过锁机制解决并发冲突。对于无法使用共享内存的情况,提到了序列化数据到磁盘的方案。
摘要由CSDN通过智能技术生成

如果您使用Zend的php版本,那很简单.

您无需序列化数据.

只能缓存内容.文件句柄等资源不能.

要存储true / false,请使用1,0,以便可以使用===区分缓存失败和结果.

商店:

zend_shm_cache_store('cache_namespace::this_cache_name',$any_variable,$expire_in_seconds);

检索:

$any_variable = zend_shm_cache_fetch('cache_namespace::this_cache_name');

if ( $any_variable === false ) {

# cache was expired or did not exist.

}

对于长寿命数据,您可以使用:

zend_disk_cache_store();zend_disk_cache_fetch();

对于没有zend的人,相应的APC版本如上:

商店:

apc_store('cache_name',$any_variable,$expire_in_seconds);

检索:

$any_variable = apc_fetch('cache_name');

if ( $any_variable === false ) {

# cache was expired or did not exist.

}

从未使用过任何其他提到的方法.

如果您没有可用的共享内存,则可以将数据序列化/反序列化为磁盘.当然共享内存要快得多,而zend的好处是它为你处理并发问题并允许命名空间:

商店:

file_put_contents('/tmp/some_filename',serialize($any_variable));

检索:

$any_variable = unserialize(file_get_contents('/tmp/some_filename') );

编辑:为了自己处理并发问题,我认为最简单的方法是使用锁定.我仍然可以看到锁存在和获取锁定之间的这个伪代码中的竞争条件的可能性,但是你明白了.

Psuedo代码:

while ( lock exists ) {

microsleep;

}

get lock.

check we got lock.

write value.

release lock.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值