会话在5-10分钟后过期

时间:2016-09-04 14:04:50

标签: php session

我已经实现了SessionHandlerInterface类并编写了我自己的会话函数。我用它们在数据库中存储会话。但是,我的会话被破坏了,即使它们的到期时间至少是3小时,如果会话的话。值得到修改从当前时间到下三个小时的时间变化。

public function write($id, $data)
    {
    $this->remote_write = new RemoteAddress();
    $this->ip_address_write = $this->remote_write->getIpAddress();
    $DateTime = date('Y-m-d H:i:s');
    $NewDateTime = date('Y-m-d H:i:s', strtotime($DateTime . ' + 3 hour'));
    $stmt = $this->link->prepare("REPLACE INTO Session SET Session_Id = ?, Session_Expires = '" . $NewDateTime . "', Session_Data = '" . $data . "', ip_address = '" . $this->ip_address_write . "'");
    $stmt->bind_param("s", $id);

    // $result = mysqli_query($this->link,"REPLACE INTO Session SET Session_Id = '".$id."', Session_Expires = '".$NewDateTime."', Session_Data = '".$data."'");

    if ($stmt->execute())
        {
        return true;
        }
      else
        {
        return false;
        }
    }

public function destroy($id)
    {
    $stmt = $this->link->prepare("DELETE FROM Session WHERE Session_Id =?");
    $stmt->bind_param("s", $id);
    if ($stmt->execute())
        {
        return true;
        }
      else
        {
        return false;
        }
    }

public function gc($maxlifetime)
    {
    $result = $this->link->query("DELETE FROM Session WHERE ((UNIX_TIMESTAMP(Session_Expires) + " . $maxlifetime . ") < UNIX_TIMESTAMP(NOW()))");
    if ($result)
        {
        return true;
        }
      else
        {
        return false;
        }
    }

这些是我实现的一些功能,如果有人需要整个代码,我也可以上传。

session

这是我网站的phpinfo。

这种奇怪的行为可能是什么原因? 为什么我的会话会在一段时间后继续销毁?

更新

数据库看起来像这样

enter image description here

0 个答案:

没有答案