在最近的项目中发现。使用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函数的变量也被继承了。
不知道有没有大神遇到过这个样子的情况,跪求解决方案。。。