时间:2021-07-01 10:21:17 帮助过:21人阅读
- <br><!--?php <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>require 'class.phplock.php'; <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>* 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>PHP 进程锁定问题分析研究
- <p></p>
- <p align="left"><span id="url" itemprop="url">http://www.bkjia.com/PHPjc/320818.html</span><span id="indexUrl" itemprop="indexUrl">www.bkjia.com</span><span id="isOriginal" itemprop="isOriginal">true</span><span id="isBasedOnUrl" itemprop="isBasedOnUrl">http://www.bkjia.com/PHPjc/320818.html</span><span id="genre" itemprop="genre">TechArticle</span><span id="description" itemprop="description">在web开发中我们经常对我们的数据库耗时操作做缓存,但是可能出现一个陷阱,在缓存失效的一瞬间,大量的访问得到缓存失效的标示,都...</span></p>