Сохранить данные сеанса перед уничтожением? - PullRequest
0 голосов
/ 22 февраля 2012

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

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

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

Возможно ли это?

Ответы [ 4 ]

0 голосов
/ 22 февраля 2012
if(unset($_SESSION['images']))
{
    // do something?
}

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

0 голосов
/ 22 февраля 2012

Посмотрите обработчики обычного сеанса на http://www.php.net/manual/en/function.session-set-save-handler.php

0 голосов
/ 22 февраля 2012

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

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

0 голосов
/ 22 февраля 2012

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...