【发布时间】:2010-09-12 10:33:54
【问题描述】:
假设我在 database 中存储了一些 与会话 id 关联的数据。 php 中的会话超时时如何删除数据(我不想用所有垃圾数据填充我的文件服务器。)?
在 php 中是否有任何回调函数可以调用?
【问题讨论】:
标签: php ajax session-timeout
假设我在 database 中存储了一些 与会话 id 关联的数据。 php 中的会话超时时如何删除数据(我不想用所有垃圾数据填充我的文件服务器。)?
在 php 中是否有任何回调函数可以调用?
【问题讨论】:
标签: php ajax session-timeout
你可以写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
});
});
【讨论】:
每次发出请求时,让会话用户报告回您的数据库。 (不是新行,而是更新他的行,这样你就不会填满你的数据库)。
然后让 cronjob 或类似的东西清理所有上次报告时间戳早于会话超时值的会话。
【讨论】:
我不知道这本身是否符合回调的条件,但也许您可以利用销毁处理程序在显式会话终止时删除陈旧的数据库信息?
http://php.net/manual/en/function.session-set-save-handler.php
【讨论】: