当前位置:首页 » 文件管理 » thinkphp缓存时间

thinkphp缓存时间

发布时间: 2024-07-01 16:12:09

1. thinkphp 数据缓存是否校验缓存是什么意思

在ThinkPHP中进行缓存操作,一般情况下并不需要直接操作缓存类,因为系统内置对缓存操作进行了封装,直接采用S方法即可,例如:

  • 缓存初始化

// 缓存初始化

S(array('type'=>'xcache','expire'=>60));

缓存初始化可以支持的参数根据不同的缓存方式有所区别,常用的参数是:

参数 描述

expire 缓存有效期(时间为秒)

prefix 缓存标识前缀

type 缓存类型

系统目前已经支持的缓存类型包括:Apachenote、Apc、Db、Eaccelerator、File、Memcache、Redis、Shmop、Sqlite、Wincache和Xcache。

如果S方法不传入type参数初始化的话,则读取配置文件中设置的DATA_CACHE_TYPE参数值作为默认类型。同样的道理,prefix参数如果没有传入会读取配置文件的DATA_CACHE_PREFIX参数值,expire参数没有传入则读取DATA_CACHE_TIME配置值作为默认。

有些缓存方式会有一些自身特殊的参数,例如Memcache缓存,还需要配置其他的参数:

S(array(

'type'=>'memcache',

'host'=>'192.168.1.10',

'port'=>'11211',

'prefix'=>'think',

'expire'=>60)

);

对于全局的缓存方式,一般我们建议添加prefix(缓存前缀)参数用以区分不同的应用,以免混淆。

  • 缓存设置

// 设置缓存

S('name',$value);

会按照缓存初始化时候的参数进行缓存数据,也可以在缓存设置的时候改变参数,例如:

// 缓存数据300秒

S('name',$value,300);

甚至改变之前的缓存方式或者更多的参数:

// 采用文件方式缓存数据300秒

S('name',$value,array('type'=>'file','expire'=>300));

如果你在缓存设置的时候采用上面的数组方式传入参数的话,会影响到后面的缓存存取。

缓存读取

// 读取缓存

$value = S('name');

缓存读取的是前面缓存设置的值,这个值会受缓存初始化或者缓存设置的时候传入的参数影响。 如果缓存标识不存在或者已经过期,则返回false,否则返回缓存值。

  • 缓存删除

// 删除缓存

S('name',null);

删除缓存标识为name的缓存数据。

对象方式操作缓存

我们可以采用对象方式操作缓存,例如:

// 初始化缓存

$cache = S(array('type'=>'xcache','prefix'=>'think','expire'=>600));

$cache->name = 'value'; // 设置缓存

$value = $cache->name; // 获取缓存

unset($cache->name); // 删除缓存

如果你设置了缓存前缀的话,对应的缓存操作只是对应该缓存前缀标识的,不会影响其他的缓存。

关于文件缓存方式的安全机制

如果你使用的是文件方式的缓存机制,那么可以设置DATA_CACHE_KEY参数,避免缓存文件名被猜测到,例如:

'DATA_CACHE_KEY'=>'think'

  • 缓存队列

数据缓存可以支持缓存队列,简单的说就是可以限制缓存的数量,只需要在初始化的时候指定length参数:

S(array('type'=>'xcache','length'=>100,'expire'=>60));

设置了length参数后,系统只会缓存最近的100条缓存数据。

2. THINKPHP 如果使用内存缓存

例如这个:

$config_array = F ( $this->lang . 'config' );//F方法是TP中快速缓存方法;$this->lang.'config'是指定了这个缓存文件的名称;$this->lang是当前网站的语言类型

$config_array ['dianzan'] = intval ( $_POST ['dianzan'] );

F ( $this->lang . 'config', $config_array );

$this->success ( '保存成功' );


3. Thinkphp3.0版本的静态缓存该如何配置

'HTML_CACHE_ON' => true, // 开启静态缓存'HTML_CACHE_TIME' => 60, // 全局静态缓存有效期(秒)'HTML_FILE_SUFFIX' => '.shtml', // 设置静态缓存文件后缀'HTML_CACHE_RULES' => array( // 定义静态缓存规则 // 定义格式1 数组方式 '静态地址' => array('静态规则', '有效期', '附加规则'), // 定义格式2 字符串方式 '静态地址' => '静态规则', )

手册上是这样配的,你是不是写的作用于不对,要在config文件夹中配置。

4. 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>

5. php thinkphp3.2设置缓存与使用缓存的问题

我先声明本人没有使用过ThinkPHP3.2。对thinkphp逻辑不是很懂

缓存的作用是减轻数据库压力和加快数据读取速度。

首先,第一次进页面缓存中肯定没有数据,进入页面后先判断缓存中是否有数据,若有:则从缓存中获取数据,若无:从数据库获取数据,并写入缓存。第二次进来判断的时候,缓存中就有数据了,直接从缓存中返回数据,不进行数据库操作。

代码:

functionindex(){
if(cache('user_list')){//缓存中有数据
$data=cache('user_list');
}else{//缓存中没有数据
$data=db('user')->select();//数据库查询
cache('user_list',$data,3600);//存入缓存
}
$this->assign('data',$data);
return$this->display();
}
热点内容
青华编程 发布:2024-07-03 15:16:52 浏览:132
汽车压缩机泵头怎么拆 发布:2024-07-03 15:10:36 浏览:187
荣耀9会升级方舟编译器吗 发布:2024-07-03 15:09:31 浏览:624
安卓软件怎么降低覆盖 发布:2024-07-03 14:53:12 浏览:51
钉钉建数据库 发布:2024-07-03 14:47:09 浏览:896
python打印程序 发布:2024-07-03 14:46:13 浏览:156
什么指甲油才能做解压球 发布:2024-07-03 14:20:49 浏览:235
android笔记本 发布:2024-07-03 14:15:23 浏览:123
android游戏机 发布:2024-07-03 13:56:39 浏览:47
二手冷库压缩机 发布:2024-07-03 13:28:26 浏览:494