【thinkphp5】Session和Cache记录微信accesstoken

记录一个项目实际遇到的坑,不要把token存放在session,要存在在cache里面!!

因为Session并不能设置expire过期时间,Session::set()方法第三个参数是作用域,而非过期时间!!!因此不能混用cache的用法。

session的set方法

    /**
     * session设置
     * @param string        $name session名称
     * @param mixed         $value session值
     * @param string|null   $prefix 作用域(前缀)
     * @return void
     */
    public static function set($name, $value = '', $prefix = null)
    {
        empty(self::$init) && self::boot();

        $prefix = !is_null($prefix) ? $prefix : self::$prefix;
        if (strpos($name, '.')) {
            // 二维数组赋值
            list($name1, $name2) = explode('.', $name);
            if ($prefix) {
                $_SESSION[$prefix][$name1][$name2] = $value;
            } else {
                $_SESSION[$name1][$name2] = $value;
            }
        } elseif ($prefix) {
            $_SESSION[$prefix][$name] = $value;
        } else {
            $_SESSION[$name] = $value;
        }
    }

缓存的set方法 

    /**
     * 写入缓存
     * @access public
     * @param  string   $name   缓存标识
     * @param  mixed    $value  存储数据
     * @param  int|null $expire 有效时间 0为永久
     * @return boolean
     */
    public static function set($name, $value, $expire = null)
    {
        self::$writeTimes++;

        return self::init()->set($name, $value, $expire);
    }
 

 

这个区别,平时都不怎么会用到,今天就遇到了怎么样都取不到token,改用cache方法就好了,注意注意

你可能感兴趣的:(fastadmin,PHP,微信,java,开发语言)