2010-09-12 88 views
0

说我存储一些数据与会话ID数据库。如何删除会话超时时的数据php我不想用我所有的垃圾数据填满我的文件服务器)?如何删除会话相关数据

是否有任何回拨功能可拨打php

回答

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

$(window).unload(function() { 
    $.get('destroy_session.php', null, function(data, status) { 
     // ignore result 
    }); 
}); 
+0

我的印象是它只销毁会话变量,而不是数据库中的数据。是这样吗? – danny 2010-09-12 11:14:41

+0

我添加sql stagment – jcubic 2010-09-12 12:51:25

1

让用户在每次发出请求时都将会话报告发送回数据库。 (不是新行,但更新他的行,所以你不会填充你的分贝)。

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

+0

什么,我关心的是如何在用户关闭后做访问uload事件该脚本窗口(也许永远不会回来)。有可能吗? – danny 2010-09-12 10:46:59

+0

然后最后一个报告返回计时器将是旧的,cronjob将清理它。 – 2010-09-12 12:55:59

0

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

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

+0

就是这样,摧毁处理程序似乎我一直在寻找。非常感谢 。 – danny 2010-09-12 11:19:21

+0

不客气。它是如何工作的? – JTP 2010-09-15 01:49:34