2012-03-02 6 views
4

私はSymfony2プロジェクトを持っています。ここで、各セッションの開始時に、ユーザがファイルを操作して配置できるフォルダをサーバ上に作成します。on session endイベント

ユーザーのフォルダを削除するには、彼がブラウザを閉じるときに (または他の関連するイベントで、セッションのタイムアウトを確認することができますか?)。

どうすればこの問題を解決できますか?

PS:私はあなたの関数をコード化できるsessionHandlerをj​​avaが持っていると読んでいます。

php(Symfony2具体的)に類似したものはありますか?

答えて

4

まず、ブラウザがHTMLとPHPで閉じられていると認識できません。あなたは、ブラウザがまだそこにあることを知るには、ajaxと一定のポーリングまたは何らかのものが必要です。ブラウザがまだ存在している(セッションは有効)が、数分間インターネット接続がない(ラップトップ、駄目なwlan、何でも)場合、問題が発生する可能性があるため、可能ですが、btは複雑です。

サーバからスクリプトを取得したときにPHPが実行されるため、PHPでこれを行うsessionHandlerを使用することはできません。最後の行が実行されると停止します。誰もスクリプトを再度取得しない場合、どうすればよいでしょうか?セッションがまだ存在するかどうかを確認するスクリプトを再起動する魔法はありません。

だから、どうしたらいいですか?まず、データベースセッションストレージなどを使用してセッションを可視にしたいとします。それから、スクリプトを開始して、すべてのセッションを調べて、どれが現在無効であるかを決めてから、それを使って(フォルダの削除など)何かをして、cronジョブを開始する必要があります。 Symfonyは、セッション管理をデータベースに保存する方法(hereを参照)とcrontab(hereを参照)を使って実行できるタスクを作成するように設定することができます。

どのセッションが無効で、このセッションで何をするかを決定する論理部分があなたの一部です。しかし、セッションの時間と価値がデータベースにあるので、それほど難しいことではありません。

関連する問題