搜索
系统检测到您的用户名不符合规范:

关于TP Redis缓存过期时间被自动继承的问题

浏览:1641 发布日期:2017年12月29日 分类:求助交流
在最近的项目中发现。使用S方法存储Redis出现过期时间被自动继承的问题。
config配置
define("REDIS_HOST","127.0.0.1");
define("REDIS_PORT",6379);
define("REDIS_TIMEOUT",300);
define("REDIS_PERSISTENT",false);
define("REDIS_AUTH",'1234');
define("DATA_CACHE_TIME",10800);


在项目中使用S函数:
S('room_ext_gag_' . $live_room . "_" . $_SESSION['server_id'], $info['is_gag']);
并没有设置过期时间

在linux查看最终结果:
redis 127.0.0.1:6379> ttl Redis_room_ext_gag_939_1
(integer) 51


后来查看了TP的核心文件发现。把\ThinkPHP\Common\functions.php中S方法的一个静态变量修改为普通变量即可解决问题。
function S($name,$value='',$options=null) {
static $cache = '';
# codde...
}

改为
function S($name,$value='',$options=null) {
$cache = '';
# codde...
}

不知道是不是在使用S函数之前使用了M()->chche(true,60)->find();的原因,使S函数的变量也被继承了。
不知道有没有大神遇到过这个样子的情况,跪求解决方案。。。
最佳答案
评论() 相关
后面还有条评论,
评论支持使用[code][/code]标签添加代码
您需要登录后才可以评论 登录 | 立即注册
收藏
BambooMr
积分:120 等级:LV1
热点推荐
(追記) (追記ここまで)
最新更新

我们

合作

网站

信息

ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。

AltStyle によって変換されたページ (->オリジナル) /