thinkphp缓存技术 .
thinkphp_cache()用法和场景_解释说明
thinkphp cache()用法和场景解释说明1. 引言1.1 概述在现代网站和应用开发中,缓存起着非常重要的作用。
它可以提高系统性能、减轻数据库负载、加快数据访问速度等。
而在thinkphp框架中,我们可以使用`cache()`方法来进行缓存相关操作。
本文将介绍thinkphp中`cache()`方法的基本用法、常见场景应用,以及一些使用技巧和注意事项。
1.2 文章结构本文将分为五个部分进行讲解。
首先是引言部分,介绍文章的背景和结构;其次是thinkphp `cache()`的基本用法,包括缓存读取、写入和删除;然后是常见场景应用,如页面缓存优化、数据查询缓存加速和表单重复提交避免;接下来是使用技巧和注意事项,包括设置缓存有效期、清空所有缓存和指定键名的缓存以及高效利用缓存包装函数和选择合适的驱动类型;最后是结论部分,总结全文并提出思考或建议。
1.3 目的本文旨在帮助读者深入了解thinkphp框架中`cache()`方法的使用,并指导读者在实际项目开发过程中合理地应用缓存技术,以提升系统性能和用户体验。
通过掌握`cache()`方法的基本用法、常见场景应用和使用技巧,读者能够更加灵活地运用缓存机制解决实际问题,并避免一些常见的误区和错误使用。
2. thinkphp cache()的基本用法2.1 缓存读取:thinkphp的缓存读取功能通过调用cache()函数实现。
cache()函数接受一个参数,即要读取缓存的键名。
例如,我们可以使用如下代码来读取名为“user”键的缓存数据:```$data = cache('user');```在上述代码中,cache('user')表示读取名为“user”的缓存数据,并将其赋值给变量$data。
如果成功读取到了缓存数据,则$data变量将包含该数据,否则为空。
2.2 缓存写入:与缓存读取类似,thinkphp的缓存写入功能也是通过cache()函数来实现的。
认识:ThinkPHP的编译缓存文件~runtime.php
认识:ThinkPHP的编译缓存⽂件~runtime.php1.定义单⼊⼝⽂件(index.php)在单⼊⼝index.php中不定义这两项时,会⽣成编译缓存⽂件~runtime.phpdefine('RUNTIME_PATH','./App/Temp/'); //定义编译⽬录define('APP_DEBUG',TRUE); //开启调试模式上述两⾏不能在index.php中作⽤,则index.php变为1 <?php2define('APP_NAME','App'); //项⽬名称3define('APP_PATH','./App/'); //项⽬路径4include './ThinkPHP/ThinkPHP.php'; //引⼊ThinkPHP核⼼运⾏⽂件5 ?>2.⽣成编译缓存⽂件(~runtime.php)3.复制~runtime.php中的全部内容到index.php中,运⾏效果会和之前⼀样。
~runtime.php中缓存的编译内容,相当于把index.php引导的所有操作全部集成到~runtime.php⽂件中。
有了这个缓存的编译⽂件,index.php在下次运⾏时,不再引导,⽽是直接检测是否存在~runtime.php编译缓存⽂件,如果在,则直接运⾏~runtime.php。
其他详解()项⽬编译机制是指系统第⼀次运⾏的时候会⾃动⽣成核⼼缓存⽂件~runtime.php和项⽬编译缓存⽂件~app.php。
这些编译缓存⽂件把核⼼和项⽬必须的⽂件打包到⼀个⽂件中,并且去掉所有空⽩和注释代码,因为存在⼀个预编译的过程,所以还会进⾏⼀些相关的⽬录检测,对于不存在的⽬录可以⾃动⽣成,这个⾃动⽣成机制后⾯还会提到。
当第⼆次执⾏的时候就会直接载⼊编译过的缓存⽂件,从⽽省去很多IO开销,加快执⾏速度。
ThinkPHP5.1教程67.缓存功能
ThinkPHP5.1教程67.缓存功能67.缓存功能学习要点:1.缓存功能本节课我们来学习一下系统提供的缓存功能,实现缓存的写入和读取。
一.缓存功能1.系统内置了很多类型的缓存,除了File,其它均需要结合相关产品;2.我们这里主要演示File文本缓存,其它的需要学习相关产品;3.在app.php中,配置文件cache.php进行缓存配置,可以用::init();//驱动方式'type'=>'File',//缓存保存目录(默认runtime/cache)'path'=>'',//缓存前缀'prefix'=>'',//缓存有效期0表示永久缓存'expire'=>0,4.::set()方法,可以设置一个缓存,然后再runtime/cache查看生成结果;Cache::set('user','Mr.Lee');5.::inc()和::dec()实现缓存数据的自增和自减操作;Cache::inc('num');Cache::inc('price',3);Cache::dec('num');Cache::dec('price',3);6.::has()方法,判断缓存是否存在,返回布尔值;Cache::has('user');7.::get()方法,从缓存中获取到相应的数据,无数据返回null;Cache::get('user');8.::delete()方法,可以删除指定的缓存文件;Cache::rm('user');9.::pull()方法,先获取缓存值,然后再删除掉这个缓存,无数据返回null;Cache::pull('user');10.::clear()方法,可以清除所有缓存;Cache::clear();11.::tag()标签,可以将多个缓存归类到标签中,方便统一管理,比如清除;Cache::tag('tag')->set('user','Mr.Lee');Cache::tag('tag')->set('age',20);Cache::set('user','Mr.Lee');Cache::set('age',20);Cache::tag('tag',['user','age']);Cache::clear('tag');12.助手函数的使用:cache();//设置缓存cache('user','Mr.Lee',3600);//输出缓存echo cache('user');//删除指定缓存cache('user',null);。
PHP缓存技术的多种方法
以上内容是代码级的解决方案,下面的内容是服务器端的缓存方案,
到主表的一个字段中,需要的时候数组分解一下,这样的好处是只读一个 非代码级的,要有多方的合作才能做到
表,坏处就是两个数据同步会多不少步骤,数据库永久是瓶颈,用硬盘换
6、 内存缓存:
速度,是这个的关键点。
Memcached 是高性能的,分布式的内存对象 PHP 缓存机制系统,用于
的查询结果就直接从缓存表或文件中获得。
5、 静态缓存:
用的最广的例子看 Discuz 的搜寻功能,把结果 ID 缓存到一个表中,
这里所说的静态缓存是指静态化,直接生成 HTML 或 XML 等文本文件,
下次搜寻相同关键字时先搜寻缓存表。
有更新的时候重生成一次,适合于不太改变的页面,这就不说了。
举个常用的方法,多表关联的`时候,把附表中的内容生成数组保存
2、 页面缓存:
在动态应用中削减数据库负载,提升访问速度。
每次访问页面的时候,都会先检测相应的缓存页面文件是否存在,假
7、 php 的缓冲器:
thinkphp的静态缓存使用方法
thinkphp的静态缓存使用方法ThinkPHP在数据缓存方面包括文件方式、共享内存方式和数据库方式在内的多种方式进行缓存,通过插件方式还可以增加以后需要的缓存类,让应用开发可以选择更加适合自己的缓存方式,从而有效地提高应用执行效率。
目前已经支持的缓存方式包括:File、Apachenote、Apc、Eaccelerator、Memcache、Shmop、Sqlite、Db、Redis和Xcache。
ThinkPHP内置了静态缓存的功能,并且支持静态缓存的规则定义。
要使用静态缓存功能,需要开启HTML_CACHE_ON参数,并且使用HTML_CACHE_RULES配置参数设置静态缓存规则文件。
静态规则的定义方式如下:静态缓存文件的根目录在HTML_PATH定义的路径下面,并且只有定义了静态规则的操作才会进行静态缓存,注意,静态规则的定义有三种方式:第一种是定义全局的操作静态规则,例如定义所有的read操作的静态规则为其中,{id}表示取$_GET['id']为静态缓存文件名,第二个参数表示缓存60秒第二种是定义全局的模块静态规则,例如定义所有的User模块的静态规则为其中,{:action}表示当前的操作名称静态第三种是定义某个模块的操作的静态规则,例如,我们需要定义Blog模块的read操作进行静态缓存有个别特殊的规则,例如空模块和空操作的静态规则的定义,可以使用下面的方式:第四种方式是定义全局的静态缓存规则,这个属于特殊情况下的使用,任何模块的操作都适用,例如根据当前的URL进行缓存静态规则是用于定义要生成的静态文件的名称,写法可以包括以下情况1、使用系统变量包括_GET_REQUEST_SERVER_SESSION_COOKIE格式:例如:2、使用框架特定的变量例如:{:app}、{:group}、{:module}和{:action}分别表示当前项目名、分组名、模块名和操作名3、使用_GET变量{var|function}也就是说{id}其实等效于{$_GET.id}4、直接使用函数{|function}例如:{|time}5、支持混合定义,例如我们可以定义一个静态规则为:'{id},{name|md5}'在{}之外的字符作为字符串对待,如果包含有”/”,会自动创建目录。
ThinkPHP5框架缓存查询操作分析
ThinkPHP5框架缓存查询操作分析本⽂实例讲述了ThinkPHP5框架缓存查询操作。
分享给⼤家供⼤家参考,具体如下:缓存设置与使⽤:1、在\application\config.php中设置如下:'cache' => [// 使⽤复合缓存类型'type' => 'complex',// 默认使⽤的缓存'default' => [// 驱动⽅式'type' => 'File', //!!在这设置换⼈的缓存⽅式// 缓存保存⽬录'path' => CACHE_PATH,],// ⽂件缓存'file' => [// 驱动⽅式'type' => 'file',// 设置不同的缓存保存⽬录'path' => RUNTIME_PATH . 'file/',],// redis缓存'redis' => [// 驱动⽅式'type' => 'redis',// 服务器地址'host' => '127.0.0.1',],],2、控制器中use \think\Cache;3、控制器中使⽤Cache::set('name', 'tom',3600);Cache::get('name');缓存查询:1、简单缓存查询:在任意控制器⾥(若想在model⾥完成数据查询也可以,需使⽤Db类)public function cacheSelect(){$_data = db('表名')->cache(60)->find();dump($_data);//60s内在缓存⾥提取数据,不必再从数据库查询}2、设置指定缓存标识,使查询更有效率,使⽤更加⽅便:public function cacheSelect(){$result = db('表名')->cache('随意字符')->where('id','<', 10)->select();}//cacheKey⽅法为任意控制器的任意⽅法public function cacheKey(){//在其他地⽅直接调⽤查出来的数据,避免再次查询:$data = \think\Cache::get('随意字符');dump($data);}更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》及《》。
ThinkPHP实现一键清除缓存方法
ThinkPHP实现⼀键清除缓存⽅法很多的开源cms系统都有⼀键清除缓存的功能,缓存是为了减轻服务器的压⼒⽽产⽣的,但是同时有缓存的存在也可能使⼀些数据不能实时更新,对此,我们就来实现⼀个ThinkPHP的清理缓存的功能。
代码如下:ThinkPHP后台执⾏的代码://获取要清楚的⽬录和⽬录所在的绝对路径public function cache(){////前台⽤ajax get⽅式进⾏提交的,这⾥是先判断⼀下if($_POST['type']){//得到传递过来的值$type=$_POST['type'];//将传递过来的值进⾏切割,我是⽤“-”进⾏切割的$name=explode('-', $type);//得到切割的条数,便于下⾯循环$count=count($name);//循环调⽤上⾯的⽅法for ($i=0;$i<$count;$i++){//得到⽂件的绝对路径$abs_dir=dirname(dirname(dirname(dirname(__FILE__))));//组合路径$pa=$abs_dir.'indexRuntime';$runtime=$abs_dir.'indexRuntime~runtime.php';if(file_exists($runtime))//判断⽂件是否存在{unlink($runtime);//进⾏⽂件删除}//调⽤删除⽂件夹下所有⽂件的⽅法$this->rmFile($pa,$name[$i]);}//给出提⽰信息$this->ajaxReturn(1,'清除成功',1);}else{$this->display();}}public function rmFile($path,$fileName){//删除执⾏的⽅法//去除空格$path = preg_replace('/(/){2,}|{}{1,}/','/',$path);//得到完整⽬录$path.= $fileName;//判断此⽂件是否为⼀个⽂件⽬录if(is_dir($path)){//打开⽂件if ($dh = opendir($path)){//遍历⽂件⽬录名称while (($file = readdir($dh)) != false){//逐⼀进⾏删除unlink($path.''.$file);}//关闭⽂件closedir($dh);}}}前台页⾯部分代码如下:<script type="text/javascript" src="__PUBLIC__/admin/js/jquery.js"></script><script type="test/javascript">$(function(){$('#button').click(function(){if(confirm("确认要清除缓存?")){var $type=$('#type').val();var $mess=$('#mess');$.post('__URL__/clear',{type:$type},function(data){alert("缓存清理成功");});}else{return false;}});});</script>。
ThinkPHP3.2开放cache注缓存,过滤非法字符
ThinkPHP3.2开放 cache注缓存,过滤非法字符
打开缓存配置文件 /Application/Common/conf/cache.php源代码如下面:
<?php return array(
//'配置项'=>'配置值' 'LAYOUT_ON' => true, 'HTML_CACHE_ON' => strpos($_SERVER['HTTP_HOST'], '.') !== false, // 开启静态缓存 默觉得 true 本地不开启 'HTML_CACHE_TIME' => 3600, // 全局静态缓存有效期(秒) 'HTML_FILE_SUFFIX' => '.shtml', // 设置静态缓存文件后缀 'HTML_CACHE_RULES' => array(
'*' => array('{:module}/{:controller}/{:action}/{$_SERVER.REQUEST_URI|md5}', 3600, 'trimSW'), ) );
注意:背后的 trimSW是去除全部非 / \w 的字符串,防止输入中文等特殊字符某些系统报错。
函数 trimSW的源代码:
/** * @author default7@ * @description 去除 空格 和非\w 字符串,用于cache 配置 * * @param $str * @param string $emptyValue * * @return mixed|string */ function trimSW($str, $emptyValue = '_empty_'([^\w\/]+)/', '-', $str); if (empty($str)) {
thinkphp运行原理
thinkphp运行原理
ThinkPHP运行原理主要包括以下几个方面:
1. 入口文件index.php:ThinkPHP的入口文件,接收用户的请求,并根据请求的URL进行解析。
2. 路由机制:ThinkPHP通过路由机制将URL映射到具体的控制器和方法。
路由机制可以根据用户的请求URL进行解析,
将URL中的参数和值传递给控制器和方法。
3. 控制器和方法:根据路由机制将请求映射到具体的控制器和方法进行处理。
控制器负责接收用户的请求,并调用相应的方法进行处理。
4. 模型和视图:控制器负责从数据库中获取数据,并将数据传递给视图进行展示。
模型负责读取和写入数据库的操作,视图负责展示数据给用户。
5. 插件机制:ThinkPHP提供了插件机制,可以方便地扩展功能。
插件机制允许用户通过添加插件来增强系统功能。
6. 缓存机制:ThinkPHP提供了缓存机制,可以将一些常用的
数据进行缓存,提高系统的性能。
7. 模板引擎:ThinkPHP使用了自己开发的模板引擎,可以将PHP代码和HTML代码分离,提高开发效率和代码的可读性。
总的来说,ThinkPHP的运行原理是根据用户的请求进行路由解析,然后调用相应的控制器和方法进行处理,最后将处理结果展示给用户。
同时,它还提供了插件机制、缓存机制和模板引擎等功能,方便开发者进行功能扩展和性能优化。
【IT专家】ThinkPHP3.1快速入门(10)缓存
ThinkPHP3.1快速入门(10)缓存2013/03/28 0 ThinkPHP3.1快速入门(10)缓存 在项目中,合理的使用缓存对性能有较大的帮助。
ThinkPHP提供了方便的缓存方式,包括数据缓存、静态缓存和查询缓存等,支持包括文件方式、APC、Db、Memcache、Shmop、Sqlite、Redis、Eaccelerator和Xcache在内的动态数据缓存类型,以及可定制的静态缓存规则,并提供了快捷方法进行存取操作。
数据缓存 在ThinkPHP中进行缓存操作,一般情况下并不需要直接操作缓存类,因为系统内置对缓存操作进行了封装,3.1版本推荐的数据缓存方法是cache方法,基本的用法是: 1缓存初始化 cache(array(‘type’= ‘xcache’,’expire’= 60)); 缓存初始化可以支持的参数根据不同的缓存方式有所区别,常用的参数是: expire 缓存有效期(时间为秒) prefix 缓存标识前缀 type 缓存类型 核心版本只有File缓存方式的支持,其他的缓存方式支持需要下载单独的缓存驱动,并放入系统目录的Extend/Driver/Cache/下面,否则会出现不支持缓存类型的错误提示。
有些缓存方式会有一些自身特殊的参数,例如Memcache缓存,还需要配置其他的参数: cache(array(‘type’= ‘memcache’,’host’= ‘192.168.1.10’,’port’= ‘11211’,’prefix’= ‘think’,’expire’= 60)); 对于全局的缓存方式,一般我们建议添加prefix(缓存前缀)参数用以区分不同的应用,以免混淆。
2缓存设置 cache(‘a’,$value); 会按照缓存初始化时候的参数进行缓存数据,也可以在缓存设置的时候改变参数,例如: cache(‘a’,$value,300);//缓存数据300秒 甚至改变之前的缓存方式或者更多的参数: cache(‘a’,$value,array(‘type’= ‘file’,’expire’= 300));//采用文件方式缓存数据300秒 如果你在缓存设置的时候采用上面的数组方式传入参数的话,会影响到后面的缓存存取。
PHP语言中缓存技术总结
PHP语言中缓存技术总结PHP语言中缓存技术总结导语:PHP是一种解释型语言,属于边编译边运行的那种。
这种运行模式的优点是程序修改很方便,但是运行效率却很低下。
下面是PHP中缓存技术总结,一起来学习下吧:1、全页面静态化缓存也就是将页面全部生成html静态页面,用户访问时直接访问的静态页面,而不会去走php服务器解析的流程。
此种方式,在CMS系统中比较常见,比如dedecms;一种比较常用的实现方式是用输出缓存:Ob_start()******要运行的代码*******$content = Ob_get_contents();****将缓存内容写入html文件*****Ob_end_clean();2、页面部分缓存该种方式,是将一个页面中不经常变的部分进行静态缓存,而经常变化的块不缓存,最后组装在一起显示;可以使用类似于ob_get_contents的方式实现,也可以利用类似ESI之类的页面片段缓存策略,使其用来做动态页面中相对静态的片段部分的缓存(ESI技术,请baidu,此处不详讲)。
该种方式可以用于如商城中的商品页;3、数据缓存顾名思义,就是缓存数据的一种方式;比如,商城中的某个商品信息,当用商品id去请求时,就会得出包括店铺信息、商品信息等数据,此时就可以将这些数据缓存到一个php文件中,文件名包含商品id来建一个唯一标示;下一次有人想查看这个商品时,首先就直接调这个文件里面的信息,而不用再去数据库查询;其实缓存文件中缓存的就是一个php数组之类;Ecmall商城系统里面就用了这种方式;4、查询缓存其实这跟数据缓存是一个思路,就是根据查询语句来缓存;将查询得到的数据缓存在一个文件中,下次遇到相同的查询时,就直接先从这个文件里面调数据,不会再去查数据库;但此处的缓存文件名可能就需要以查询语句为基点来建立唯一标示;按时间变更进行缓存其实,这一条不是真正的缓存方式;上面的2、3、4的缓存技术一般都用到了时间变更判断;就是对于缓存文件您需要设一个有效时间,在这个有效时间内,相同的访问才会先取缓存文件的内容,但是超过设定的缓存时间,就需要重新从数据库中获取数据,并生产最新的缓存文件;比如,我将我们商城的首页就是设置2个小时更新一次;5、按内容变更进行缓存这个也并非独立的缓存技术,需结合着用;就是当数据库内容被修改时,即刻更新缓存文件;比如,一个人流量很大的商城,商品很多,商品表必然比较大,这表的压力也比较重;我们就可以对商品显示页进行页面缓存;当商家在后台修改这个商品的信息时,点击保存,我们同时就更新缓存文件;那么,买家访问这个商品信息时,实际上访问的是一个静态页面,而不需要再去访问数据库;试想,如果对商品页不缓存,那么每次访问一个商品就要去数据库查一次,如果有10万人在线浏览商品,那服务器压力就大了;6、内存式缓存提到这个,可能大家想到的首先就是Memcached;memcached 是高性能的分布式内存缓存服务器。
thinkphp5 字段缓存机制
thinkphp5 字段缓存机制thinkphp5 是一款流行的PHP开发框架,它提供了丰富的功能和便捷的开发体验。
在开发过程中,缓存是一个重要的概念,可以提高系统的性能和响应速度。
本文将重点介绍thinkphp5的字段缓存机制。
一、什么是字段缓存字段缓存是指将数据库查询结果缓存起来,避免重复查询数据库,从而提高系统性能和响应速度。
在thinkphp5中,字段缓存的实现依赖于缓存驱动,默认使用的是文件缓存,也可以选择其他的缓存驱动,如Redis、Memcached等。
二、字段缓存的使用方法在thinkphp5中,字段缓存的使用非常简单。
首先,需要在配置文件中配置缓存驱动和缓存路径。
例如,我们使用文件缓存驱动,可以在`config/cache.php`文件中进行如下配置:```phpreturn [// 默认缓存驱动'default' => 'file',// 文件缓存配置'stores' => ['file' => [// 缓存保存路径'path' => '../runtime/cache/',],],];```然后,我们可以在模型中使用字段缓存。
假设我们有一个用户模型`User`,其中有一个`getUserInfo`方法用于获取用户信息。
我们可以在该方法中使用字段缓存,示例如下:```phpnamespace app\index\model;use think\Model;use think\facade\Cache;class User extends Model{public function getUserInfo($userId){$cacheKey = 'user_info_' . $userId;$userInfo = Cache::get($cacheKey);if ($userInfo) {return $userInfo;}// 从数据库中查询用户信息$userInfo = $this->where('id', $userId)->find();// 将查询结果缓存起来Cache::set($cacheKey, $userInfo);return $userInfo;}}```在上述示例中,我们首先根据用户ID构造缓存的键名,然后尝试从缓存中获取用户信息。
tp5缓存原理
tp5缓存原理TP5缓存原理解析什么是缓存•缓存是一种存储技术,用于临时存储数据,以提高数据访问速度。
•在Web开发中,缓存可以用于存储已经计算过的结果,以避免重复计算,提高性能。
TP5缓存机制•TP5(ThinkPHP5)是一款轻量级的PHP开发框架,提供了丰富的缓存功能。
•TP5的缓存机制由多个缓存驱动器(Cache Driver)组成,支持文件缓存、Redis缓存、Memcached缓存等。
TP5缓存四要素•TP5的缓存机制有四个重要要素:标识符、标签、过期时间和适配器。
–标识符(identifier)用于唯一标识缓存数据。
–标签(tag)是对缓存数据进行分类的标记。
–过期时间(expire)是指缓存数据的有效期限,过期后需要重新计算或从其他数据源获取。
–适配器(adapter)是缓存驱动器,负责存储和读取缓存数据。
TP5缓存过程1.客户端请求数据。
2.检查缓存是否存在。
3.如果缓存存在且未过期,则直接返回缓存数据;否则,进入下一步。
4.从数据源获取数据。
5.将数据保存到缓存。
6.返回数据给客户端。
TP5缓存的实现方式•TP5的缓存可以通过代码实现,也可以通过配置文件进行配置。
•在代码中,可以使用cache函数对数据进行缓存和读取操作。
•在配置文件中,可以使用config配置项对缓存进行相关设置,如选择缓存驱动器、设置缓存过期时间等。
TP5缓存驱动器•TP5提供了多种缓存驱动器,包括文件缓存驱动器、Redis缓存驱动器、Memcached缓存驱动器等。
•可通过在配置文件中设置cache配置项的type参数来选择使用的缓存驱动器。
TP5缓存应用场景•TP5的缓存功能适用于各种场景,如:–对数据库查询结果进行缓存,避免频繁查询。
–对计算结果进行缓存,提高计算性能。
–对API接口的返回结果进行缓存,减轻服务器压力。
TP5缓存的优化策略•在使用TP5缓存时,可以采取一些优化策略,如:–合理设置缓存的过期时间,避免缓存数据过期但仍然使用的情况。
THINKPHP5获取设置缓存的例子
THINKPHP5获取设置缓存的例⼦在THINKPHP5中缓存的配置放在了config.php⽂件中代码如下
如何设置缓存?
可以使⽤静态⽅法
Cache::set('key',$value,3600);//存储缓存
Cache::get('key');//获取缓存
也可以先实例化再调⽤
$cache_model=new Cache();//实例化缓存模型
$info=$cache_model->get($cache_key);//获取缓存
$cache_model->set($cache_key,$info,$cache_expire_time);//设置缓存
这⾥提供⼀个完整的例⼦
cache 的其他操作
<?php
// 针对数值类型的缓存数据,可以使⽤⾃增⾃减操作
Cache::inc('name'); // name⾃增(步进值为1)
Cache::inc('name',3); // name⾃增(步进值为3)
Cache::dec('name'); // name⾃减(步进值为1)
Cache::dec('name',3); // name⾃减(步进值为3)
Cache::get('name',''); // 表⽰如果name值不存在,则返回空字符串。
Cache::rm('name'); //删除缓存
Cache::pull('name'); //获取并删除缓存如果name值不存在,则返回null
Cache::clear(); //清空缓存。
ThinkPHP系统变量,常量,序列化,反序列化,缓存
ThinkPHP系统变量,常量,序列化,反序列化,缓存变量的输出:在模板中输出⼀个变量有两种形式:{$} {$list[‘name’]}在模板中可以使⽤系统变量,以$Think.开头系统变量:(举例选⼏个)获得服务器的IP地址:{$Think.server.SERVER_ADDR}获得外部访问的IP地址:{$Think.server.REMOTE_ADDR}获得服务器的名称:{$Think.server.SERVER_NAME}获得ThinkPHP内部定义的变量:获得当前的时间:{$Think.now}获得当前⼯具的版本:{$Think.version}模板的页⾯:{$Think.template}模板标签起始符号:{$Think.LDELIM }模板标签结束符号:{$Think.RDELIM }系统常量:(举例选⼏个)获得当前⽂件的url :{$Think.const.__SELF__}获得模板配置⽂件的配置项的值:{$Think.config.db_name}在ThinkPHP模板中,对变量使⽤函数调节:从控制器分配了⼀个字符串,在模板中,如何截取这个字符串:{$str|substr=###,5,3} 如果当前参数为函数的第⼀个参数,可以不写###在模板中加载外部⽂件:使⽤<include file=””> file( )和display( )的⽤法⼀样。
If标签的使⽤:<if condition=”条件1”>value1<elseifcondition=”条件2”>value2<else/>value3</if> condition⾥⾯写成⽐较运算符 eq表⽰等于 neq表⽰不等于修改模板引擎的界定符:在配置⽂件中,通过TMPL_L_DELIM修改‘TMPL_L_DELIM’=>’<{’ //修改左定界符‘TMPL_R_DELIM’=>’<{’ //修改右定界符修改模板引擎:'TMPL_ENGINE_TYPE'=>'Smarty'在分组中添加配置⽂件,在控制器中使⽤直接调⽤C函数。
TP5(thinkPHP框架)实现后台清除缓存功能示例
TP5(thinkPHP框架)实现后台清除缓存功能⽰例本⽂实例讲述了TP5(thinkPHP框架)实现后台清除缓存功能。
分享给⼤家供⼤家参考,具体如下:1--common的⽂件/*** 循环删除⽬录和⽂件* @param string $dir_name* @return bool*/function delete_dir_file($dir_name) {$result = false;if(is_dir($dir_name)){if ($handle = opendir($dir_name)) {while (false !== ($item = readdir($handle))) {if ($item != '.' && $item != '..') {if (is_dir($dir_name . DS . $item)) {delete_dir_file($dir_name . DS . $item);} else {unlink($dir_name . DS . $item);}}}closedir($handle);if (rmdir($dir_name)) {$result = true;}}}return $result;}2-控制器⾥的/*** 清除缓存*/public function clear() {if (delete_dir_file(CACHE_PATH) || delete_dir_file(TEMP_PATH)) {$this->success('清除缓存成功');} else {$this->error('清除缓存失败');}}3-html代码<a href="javascript::void(0)" rel="external nofollow" onclick="clearPhp(this)" data-GetUrl="{:url('login/clear')}">清楚缓存</a>4---js 代码<script>function clearPhp(obj) {var url=obj.getAttribute('data-GetUrl');//询问框layer.confirm('您确定要清除吗?', {btn: ['确定','取消'] //按钮},function(){$.get(url,function(info){if(info.code === 1){setTimeout(function () {location.href = info.url;}, 1000);}layer.msg(info.msg);});},function(){});}</script>更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》及《》。
ThinkPHP2
ThinkPHP2ThinkPHP(二)回顾(Smarty部分)1、开启缓存$smarty->caching=1|true|22、$smarty->caching=1和2的区别$smarty->caching=1:以PHP文件中$smarty->cache_lefetime=10为准$smarty->caching=1:以混编文件文件中$smarty->cache_lefetime=10为准3、单模板多缓存技术$smarty->display('模板的名称',唯一的编号)4、缓存集合$smarty->display('模板的名称','值1|值2|值3')5、局部不缓存1、{$title nocache}2、{nocache} $title {/nocache}6、清除缓存clearCache('模板名称')clearCache('模板名称',标志)clearCache(null,标志)clearAllCache()7、讲Smarty集成到项目中回顾(ThinkPHP部分)1、ThinkPHP的优点(1)快速、稳定、高效搭建程序(2)可以使开发人员把精力集中在业务逻辑上,不需要关心程序的底层架构。
(3)可以节省大量代码(4)便于后期维护(5)有利于团队的代码风格统一public function index(){//$this->display();$this->display('other');}2、相关一些框架zendframeworkyiicicakephpthinkphp一些重要的文件Controller.class.php 控制器的父类Model.class.php 模型的父类View.class.php 视图的父类搭建ThinkPHP环境define('APP_PATH','./Application/') 自动新建Application文件夹,并把环境存放在此文件夹下。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
thinkphp对缓存技术提供了极大的支持。
memcache是我们最常用到的缓存技术。
那么在thinkphp中如何用到memcache呢?1. 查看官方手册。
[php]view plaincopyprint?1. 所有的缓存方式都被统一使用公共的调用接口,这个接口就是Cache缓存类。
2.3. 缓存类的使用很简单:4.5. $Cache = Cache::getInstance('缓存方式','缓存参数');6.7. 例如,使用Xcache作为缓存方式,缓存有效期60秒。
8.9. $Cache = Cache::getInstance('Xcache',array('expire'=>'60'));10.11. 存取缓存数据12.13. $Cache->set('name','ThinkPHP'); // 缓存name数据14.15. $value = $Cache->get('name'); // 获取缓存的name数据16.17. $Cache->rm('name'); // 删除缓存的name数据以上是官方手册。
我们按照以上方法进行连接。
[php]view plaincopyprint?1. c lass CacheAction extends Action{2. //缓存类3. function index() {4.5. $cache = Cache::getInstance('Memcache',array('expire'=>'60')); //60秒6. $cache->set("name","thinkphp");7. $value = $cache->get("name");8. var_dump($value);9.10. if($value){11. dump($value);12. }else{13.14. echo "wrong";15. }16. }17. }上面的结果,却没有出现。
输出结果为:“ bool(false)11” ,一想,这丫根本没缓存啊,是不是memcache出了点问题,于是我重启memcache服务器,然后用原生态的PHP连接memcache,却能够输出缓存结果啊。
我当时就湿了。
深思过后,我恍然大悟:这丫根本没有连接memcache的ip和端口啊。
于是我又改动,如下:[php]view plaincopyprint?1. c lass CacheAction extends Action{2. //缓存类3. function index() {4.5. $cache = Cache::getInstance('Memcache',array('host'=>'127.0.0.1','port'=>'11211','expire'=>60)); //加上memcache服务器IP和端口以及失效时间6. $cache->set("name","thinkphp");7. $value = $cache->get("name");8. var_dump($value);9. //var_dump($cache);10. if($value){11. dump($value);12. }else{13. echo "wrong";14. }15.16. }17.18. }浏览器输出结果,我又湿了。
我擦。
怎么不稳定啊。
一刷新有结果,一刷新又没了,我当时无语了。
打开以上代码中的[php]view plaincopyprint?1. v ar_dump($cache);直接查看这个cache实例,看输出结果是什么,结果也是断断续续,很不稳定:[php]view plaincopyprint?1. o bject(CacheMemcache)#4 (6) { ["connected:protected"]=> bool(true) ["handler:protected"]=> object(Memcache)#5 (1) { ["connection"]=> resource(16) of type(memcache connection) } ["prefix:protected"]=> string(2) "~@" ["options:protected"]=> array(0) { } ["type:protected"]=> string(7) "EMCACHE" ["expire:protected"]=> int(3600) }以上代码表示已经连上。
继续刷新:[php]view plaincopyprint?1. o bject(CacheMemcache)#4 (6) { ["connected:protected"]=> bool(false) ["handler:protected"]=> object(Memcache)#5 (0) { } ["prefix:protected"]=> string(2) "~@" ["options:protected"]=> array(0) { } ["type:protected"]=> string(7) "EMCACHE" ["expire:protected"]=> int(3600) }我擦。
又连接失败了!我彻底阵亡了!!!2 . 通过百度查找资料,发现这另一种方法,修改配置文件config.php文件,在配置文件中加入:[php]view plaincopyprint?1.2. 'DATA_CACHE_TYPE' => 'Memcache', //默认是file方式进行缓存的,修改为memcache3. 'MEMCACHE_HOST' => 'tcp://127.0.0.1:11211', //memcache服务器地址和端口,这里为本机。
4. 'DATA_CACHE_TIME' => '10', //过期的秒数。
通过以上方法连接服务器后,再用代码进行处理,发现可以用了。
[php]view plaincopyprint?1. c lass CacheAction extends Action{2. //缓存类3. function index() {4.5. $cache = Cache::getInstance(); //修改config.php文件后,里面就不需要填参数了,直接调用,实例化。
6. $cache->set("name","thinkphp");7. $value = $cache->get("name");8. var_dump($cache);9. if($value){10. dump($value);11. }else{12.13. echo "wrong";14. }15.16. }17. }上述结果为正确,且刷新不会错误。
OK ,完美解决。
thinkphp你就不能说清楚点哇。
像MEMCACHE_HOST和DATA_CACHE_TIME在手册中根本就搜索不到。
3 . S( )方法。
在官方手册中,提供了一种便捷的缓存方式S( ):[php]view plaincopyprint?1. S("data","123456",10);2. $data = S('data');3. v ar_dump($data);结果也是正确的。
但是注意的是:这种方式默认是采用file文件方式来缓存。
直接这样输出也是可以得到结果的。
要想采用memcache进行缓存。
也一样在cofig.php加上:[php]view plaincopyprint?1. 'DATA_CACHE_TYPE' => 'Memcache', //默认是file方式进行缓存的,修改为memcache2. 'MEMCACHE_HOST' => 'tcp://127.0.0.1:11211', //memcache服务器地址和端口,这里为本机。
3. 'DATA_CACHE_TIME' => '10', //过期的秒数。
那么就变成用memcache来存储缓存了。
那么我推荐:在config.php配置文件中设定好,用S ( )方法来存储和读取。
更高效。