本文实例讲述了thinkPHP实现MemCache分布式缓存功能。分享给大家供大家参考,具体如下: 两天在研究MemCache分布式缓存的问题时,发现ThinkPHP其实并不支持分布式缓存功能,这可以从官方提供的CacheMemcache.class.php文件中看到:if(empty($options)) {$options = array(host => 127.0.0.1,port => 11211,timeout => false,persistent => false); } $func = $options[persistent] ? pconnect : connect; $this->expire = isset($o...
发现一个PHP缓存实现,实现了apc和文件缓存,继承Cache_Abstract即可实现调用第三方的缓存工具。参考shindig的缓存类和apc。 代码如下:isLocked($key)) {return $this;}$tries = 10;$count = 0;do {usleep(200);$count++;} while ($count isLocked($key));// 最多做十次睡眠等待解锁,超时则跳过并解锁$this -> isLocked($key) && $this -> unlock($key);return $this;}}/*** APC扩展缓存实现*** @category Mjie* @package C...
function CreateShtml() { ob_start(array("callback_CreateShtml","callback_GoToShtml")); } function callback_CreateShtml($buffer)[ { $page = intval(@$_REQUEST["page"]); $fileName = $_SERVER['DOCUMENT_ROOT'] . dirname($_SERVER['PHP_SELF']) . "/" . basename($_SERVER['PHP_SELF'],".php") . ($page==0 ? "" : "_" . strval($page)) . ".htm"; $fp = fopen($fileName,"wb"); fwrite($fp,$buffer); fclose(...
使用方法: Memcached 代码如下:$cache = new Cache_MemCache(); $cache->addServer(www1); $cache->addServer(www2,11211,20); // this server has double the memory, and gets double the weight $cache->addServer(www3,11211); // Store some data in the cache for 10 minutes $cache->store(my_key,foobar,600); // Get it out of the cache again echo($cache->fetch(my_key)); 文件缓存 代码如下:$cache = new Cache_F...
function CreateShtml() { ob_start(array("callback_CreateShtml","callback_GoToShtml")); } function callback_CreateShtml($buffer)[ { $page = intval(@$_REQUEST["page"]); $fileName = $_SERVER['DOCUMENT_ROOT'] . dirname($_SERVER['PHP_SELF']) . "/" . basename($_SERVER['PHP_SELF'],".php") . ($page==0 ? "" : "_" . strval($page)) . ".htm"; $fp = fopen($fileName,"wb"); fwrite($fp,$buffer); fclose(...
使用方法: Memcached 代码如下:$cache = new Cache_MemCache(); $cache->addServer(www1); $cache->addServer(www2,11211,20); // this server has double the memory, and gets double the weight $cache->addServer(www3,11211); // Store some data in the cache for 10 minutes $cache->store(my_key,foobar,600); // Get it out of the cache again echo($cache->fetch(my_key)); 文件缓存 代码如下:$cache = new Cache_F...
代码如下:class CacheException extends Exception {} /** * 缓存抽象类 */ abstract class Cache_Abstract { /** * 读缓存变量 * * @param string $key 缓存下标 * @return mixed */ abstract public function fetch($key); /** * 缓存变量 * * @param string $key 缓存变量下标 * @param string $value 缓存变量的值 * @return bool */ abstract public function store($key, $value); /** * 删除缓存变量 * * @param string $ke...
前言:在PHP+MySQL架构的站点中,本文重点从MySQL的角度去分析如何使Discuz!论坛(或者类似的PHP+MySQL架构的程序)应对大访问量。同时给出一些使用Memcache去减轻MySQL压力的建议。其中很多数据是个人测试的结果,如有不同意见,敬请留言告之。另外由于个人思维的问题,行文比较跳跃,特此声明! 系统分析:单纯的从MySQL的角度出发,单台MySQL的数据库负载到每天上亿次的操作(每秒大概1100次MySQL操作,然后乘以86400)应该不是...
代码如下://本功能主要是利用文件修改时间函数filemtime与现在时间作减法判断是否更新内容。 $cahetime=2;//设置过期时间 $cahefile="cahe.txt";//读写文本 if(file_exists($cahefile) && time()-$cahetimeecho file_get_contents($cahefile); } else { file_put_contents($cahefile,date("y-m-d H:i:s",time())); } ?> http://www.bkjia.com/PHPjc/324401.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/324401.htmlTechArticl...
在网速找了好多方法,最终还是解决了 其实最简单的方法是在头部加标签 还可以用程序控制 代码如下:header("Cache-control:no-cache,no-store,must-revalidate"); header("Pragma:no-cache"); header("Expires:0"); ?> 如果在或header("Cache-control:no-cache,no-store,must- revalidate");中少了no-store就解决不了火狐的缓存了 下面给你具体的分析: Firefox与IE浏览器缓存的两个重要区别 当你建立好一个WEB服务后,通常有两...
代码如下://本功能主要是利用文件修改时间函数filemtime与现在时间作减法判断是否更新内容。 $cahetime=2;//设置过期时间 $cahefile="cahe.txt";//读写文本 if(file_exists($cahefile) && time()-$cahetimeecho file_get_contents($cahefile); } else { file_put_contents($cahefile,date("y-m-d H:i:s",time())); } ?>
在网速找了好多方法,最终还是解决了 其实最简单的方法是在头部加标签 还可以用程序控制 代码如下:header("Cache-control:no-cache,no-store,must-revalidate"); header("Pragma:no-cache"); header("Expires:0"); ?> 如果在或header("Cache-control:no-cache,no-store,must- revalidate");中少了no-store就解决不了火狐的缓存了 下面给你具体的分析: Firefox与IE浏览器缓存的两个重要区别 当你建立好一个WEB服务后,通常有两...
一般使用文件方式的缓存就能够满足要求,而thinkPHP还提供了一个专门用于文件方式的快速缓存方法F方法。由于采用的是PHP返回方式,所以其效率较S方法较高。 F方法具有如下特点: 1.简单数据缓存;2.文件形式保存;3.采用PHP返回数据方式加载缓存;4.支持子目录缓存以及自动创建;5.支持删除缓存和批量删除;代码如下:$path="../Public/Runtime/";$str="fastrunaaaaaaaaaaaaaaaa";F("str/ffun",$str,$path); 这样就把$str字符串这个...
很多的开源cms系统都有一键清除缓存的功能,缓存是为了减轻服务器的压力而产生的,但是同时有缓存的存在也可能使一些数据不能实时更新,对此,我们就来实现一个ThinkPHP的清理缓存的功能。代码如下: ThinkPHP后台执行的代码: //获取要清楚的目录和目录所在的绝对路径public function cache(){////前台用ajax get方式进行提交的,这里是先判断一下if($_POST[type]){//得到传递过来的值$type=$_POST[type];//将传递过来的值进行切割...
核心代码: <?php//创建一个memcache对象实例$memcache = new Memcache;if(!$memcache->connect("127.0.0.1",11211)){die(连接失败);}if($memcache->set(key1,"xian",MEMCACHE_COMPRESSED,60)){echo sucess!;}//存值,其中xian字符串,也可以为数组,对象,但不能为资源$val = $memcache->get(key1);//查询获取值echo $val;$memcache->replace(key1,beijing,MEMCACHE_COMPRESSED,60);//修改$memcache->delete(key1);//删除 ?>