[开源]phplock(php进程锁) v1.0 beta1 PHP在多进程模式下(并发的web访问)由于没有内置的锁支持,在处理一些资源的之后,很容易出现并发性问题。 在web开发中我们经常对我们的数据库耗时操作做缓存,但是可能出现一个陷阱,在缓存失效的一瞬间,大量的访问
[开源]phplock(php进程锁) v1.0 beta1
PHP在多进程模式下(并发的web访问)由于没有内置的锁支持,在处理一些资源的之后,很容易出现并发性问题。
在web开发中我们经常对我们的数据库耗时操作做缓存,但是可能出现一个陷阱,在缓存失效的一瞬间,大量的访问得到缓存失效的标示,都去后端查询数据库,导致
同时大量的数据库耗时查询,出现数据库宕机等问题。此问题隐藏深,不容易查找。本项目主要用于解决php的进程间锁问题。
立即学习“PHP免费学习笔记(深入)”;
示例:
<?php<br /><br />/**<br /> * 测试例子,同时打开两个页面,可以发现总是同时只能一个页面进入到锁区间的代码<br /> * @link http://code.google.com/p/phplock/<br /> * @author sunli<br /> * @svnversion $Id: test.php 2 2009-11-24 07:14:27Z sunli1223 $<br /> * @version v1.0 beta1<br /> * @license Apache License Version 2.0<br /> * @copyright sunli1223@gmail.com<br /> */<br /><br />require 'class.phplock.php';<br /><br />$lock = new PHPLock ( 'lock/', 'lockname' );<br />$lock->startLock ();<br />$lock->startLock ();<br />//process code<br />echo "<span>进入锁</span><br />\r\n";<br />ob_end_flush();<br />flush();<br />ob_flush();<br />sleep ( 5 ); //休眠20秒,模拟并发操作<br />echo "执行完成<br />\r\n";<br />$lock->unlock ();<br />$lock->endLock ();<br />echo "释放锁完成<br />\r\n";<br /><br />/**<br /> * cache操作<br /> *<br /> * @return $array<br /> */<br />function getCache($key) {<br /> return $cache;<br />}<br />/**<br /> * 设置缓存<br /> *<br /> * @param string $key<br /> * @param array $value<br /> */<br />function setCache($key,$value) {<br /> <br />}<br />$cache=getCache($key);<br />if (! $cache) {<br /> //缓存不存在,开始加锁<br /> $lock = new PHPLock ( 'lock/', $key );<br /> $lock->startLock ();<br /> $lock->startLock ();<br /> //尝试判断缓存是否有数据,可能已经有访问重建缓存了,就不需要再次查询数据库<br /> $cache=getCache();<br /> if(!$cache){<br /> //数据库查询操作,代码省略了<br /> $data=$dbdata;<br /> setCache($key,$data);<br /> }<br /> //释放锁<br /> $lock->unlock ();<br /> $lock->endLock ();<br />}<br /><br /><br /><br /><br />?><br />项目地址:http://code.google.com/p/phplock/<br />
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号