我已经实现了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;
}
}
这些是我实现的一些功能,如果有人需要整个代码,我也可以上传。
这是我网站的phpinfo。
这种奇怪的行为可能是什么原因? 为什么我的会话会在一段时间后继续销毁?
更新
数据库看起来像这样