0

假设我在数据库中存储了一些与会话 ID 关联数据当会话在php中超时时如何删除数据(我不想用所有垃圾数据填充我的文件服务器。)?

是否有任何回调函数可以在php中调用?

4

3 回答 3

1

每次提出请求时,让具有会话的用户向您的数据库报告。(不是新行,而是更新他的行,这样你就不会填满你的数据库)。

然后让一个 cronjob 或类似的东西清理所有上次报告时间戳早于会话超时值的会话。

于 2010-09-12T10:40:50.047 回答
1

你可以写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();
?>

并使用 JQuery 在 uload 事件上使用 ajax 访问此脚本

$(window).unload(function() {
    $.get('destroy_session.php', null, function(data, status) {
       // ignore result
    });
});
于 2010-09-12T11:02:11.333 回答
0

我不知道这本身是否有资格作为回调,但也许您可以利用销毁处理程序在显式会话终止时删除陈旧的数据库信息?

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

于 2010-09-12T11:01:16.827 回答