2012-02-22 2 views
0

Возможно ли сохранить данные сеанса для целей базы данных до их уничтожения?Сохраните данные сеанса перед уничтожением?

Например, у меня есть следующие данные из сессии,

// 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? 
} 

Возможно ли?

ответ

0

Вы должны думать о session_start(); как создание единого куки в вашем браузере с хэш, который соответствует файл сеанса на сервере, сервер будет помещать любые данные в $ _SESSION, пока ваш «сеанс» активен, как только вы закроете браузер, который cookie будет отброшен из вашего браузера, и в конечном итоге (очистка, вызванная cron), файл сеанса удаляется с сервера.

Если вы хотите хранить постоянные данные за период времени или пользователя, тогда вы должны сохранить его в базе данных, файле кэша, memcache или таком.

0

Вы можете вручную управлять своими сеансами с помощью session_set_save_handler(), который устанавливает функции хранения сеанса на уровне пользователя. Затем вы можете обрабатывать свое завершение сеанса через session_register_shutdown().

Вот интересный тест этой возможности: http://www.rooftopsolutions.nl/blog/160

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

Это не работает должным образом (выполняется, когда переменная не установлена). Вместо этого он просто выполнит отмену вашей переменной сеанса и выполнит часть // do something.

Смежные вопросы