2010-09-12 98 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