Php 是否在销毁会话数据之前保存会话数据?

Php 是否在销毁会话数据之前保存会话数据?,php,session,session-variables,php-5.3,Php,Session,Session Variables,Php 5.3,是否可以在销毁会话数据之前将其保存到数据库中 例如,我有下面一个会话的数据 // start session session_start(); // init session var if (!isset($_SESSION['images'])) $_SESSION['images'] = array(); array 0 => array 'image_id' => int 1 'image_title' => string 'te

是否可以在销毁会话数据之前将其保存到数据库中

例如,我有下面一个会话的数据

// start session
session_start();

// init session var
if (!isset($_SESSION['images'])) $_SESSION['images'] = array();

array
  0 => 
    array
      'image_id' => int 1
      'image_title' => string 'test 1' (length=6)
  1 => 
    array
      'image_id' => int 2
      'image_title' => string 'test 2' (length=6)
我想在会话被破坏或浏览器关闭时将其发送到数据库

if(unset($_SESSION['images']))
{
    // do something?
}

可行吗?

您可以手动管理会话,设置用户级会话存储功能。然后,您可以通过处理会话关闭


这是一个有趣的功能测试:

看看客户会话处理程序,您应该想到
会话启动()
在浏览器上创建一个cookie时,使用与服务器上会话文件匹配的哈希值,服务器将在您的“会话”处于活动状态时将任何数据放入$\u会话,一旦您关闭浏览器,cookie将从浏览器中丢弃,并最终(由cron调用的清理)会话文件将从服务器中删除

如果要存储某个时间段或用户的持久数据,则应将其存储在数据库、缓存文件、memcache等中

if(unset($_SESSION['images']))
{
    // do something?
}
这不符合您的预期(在变量未设置时执行)。相反,它将成功地取消设置会话变量并执行
//do something
部分