0

セッションIDに関連付けられたデータをデータベースに保存するとします。PHPでセッションがタイムアウトになったときにデータを削除するにはどうすればよいですか(すべてのジャンク データでファイル サーバーをいっぱいにしたくありません)。

PHPで呼び出すコールバック関数はありますか?

4

3 に答える 3

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 に答える
1

セッションレポートを持っているユーザーに、リクエストを行うたびにデータベースに返してもらいます。(新しい行ではありませんが、データベースがいっぱいにならないように彼の行を更新してください)。

次に、cronjobなどを使用して、最後のレポートのタイムスタンプがセッションタイムアウト値よりも古いすべてのセッションをクリーンアップします。

于 2010-09-12T10:40:50.047 に答える
0

これがコールバック自体として適格かどうかはわかりませんが、明示的なセッション終了時に破棄ハンドラーを利用して古いデータベース情報を削除できる可能性がありますか?

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

于 2010-09-12T11:01:16.827 に答える