как удалить данные, связанные с сеансом - PullRequest
0 голосов
/ 12 сентября 2010

скажем, я храню некоторые данные, связанные с идентификатором сеанса в базе данных .Как удалить данные, когда время сеанса истекло в php ( Я не хочу заполнять мой файл-сервер всеми ненужными данными. )?

есть ли какая-либо функция обратного вызова для вызова в php ?

Ответы [ 3 ]

1 голос
/ 12 сентября 2010

Вы можете написать php скрипт

<?php
session_start();
$query = "DELETE FROM session_data WHERE session_id = '{$_SESSION['session_id']}'";
// in case you want to read this from ajax as json response
echo mysq_query($query) ? "true" : "false";
session_destroy();
?>

и доступ к этому сценарию с помощью ajax при событии uload с помощью JQuery

$(window).unload(function() {
    $.get('destroy_session.php', null, function(data, status) {
       // ignore result
    });
});
1 голос
/ 12 сентября 2010

Попросите пользователя с отчетом о сеансе возвращаться в вашу базу данных каждый раз, когда он делает запрос.(не новая строка, но обновите его, чтобы вы не заполняли свою базу данных).

Затем сделайте cronjob или что-то подобное, чтобы очистить все сеансы, у которых отметка времени последнего отчета старше значения времени ожидания вашего сеанса.

0 голосов
/ 12 сентября 2010

Я не знаю, квалифицируется ли это как обратный вызов как таковой, но, возможно, вы могли бы использовать обработчик уничтожения для удаления устаревшей информации базы данных при явном завершении сеанса?

http://php.net/manual/en/function.session-set-save-handler.php

...