2012-03-05 64 views
4

ユーザのセッションが終了したときにスクリプトや関数を実行して、必要な一時ファイルを削除する方法を見ています。セッションが終了したときにスクリプトを実行する

私はこの問題の解決策を見つけるためにSOを検索しましたが、thisに出くわしましたが、私はちょっとしたことがわかりました.GCに関するPHPのドキュメントは紛らわしいと思います。ドキュメンテーション - それは私が必要とするものではありません)。

私はsession_set_save_handlerのページを見て、これを思い付いた:ただし、この機能はまったく実行されません

session_set_save_handler('', '', '', '', 'deleteDocs'); 
function deleteDocs() 
{ 
    rmdir('user/' . rawurlencode($_SESSION['data']['user']['details']['email']) . '/temp'); 
} 

。率直に言って、私は自分が何をしているのか分からないような気がします。

私はGCを使ってみましたが、session.gc_divisorsession.gc_probabilityを見ましたが、とにかくphp.iniを編集できません。

これを達成できますか?私はcronジョブを使用すべきですか?もしそうなら、どのようにセッションが終了しているかを確認できますか?

+0

'session_set_save_handler'は、PHPの通常のセッション処理を独自のカスタムソリューションに置き換えるためのものです。連鎖機能ではありません。 – webbiedave

答えて

2

私はcronジョブを使用すべきですか?もしそうなら、どのようにセッションが終了しているか確認できますか?

はい。これは、ファイルの最終更新時刻(ファイルがディレクトリの場合)に基づいて行います。最大セッション経過時間よりも古い場合は、そのディレクトリを削除します。

findWikipediaコマンドを使用できます。

PHPフォルダのサンプルスクリプトは、Deleting old session files from custom set session folder?cleanup php session filesも参照してください。

+0

どのようにして最大セッション経過時間を知ることができますか? –

+0

あなたのサイトのセッションはどれくらい持続していますか?それは単にあなたが設定する方法の問題なので、言う必要があります;)6時間後にディレクトリを削除したいと思うかもしれません。 – hakre

+0

大丈夫、ありがとう! –

関連する問題