無脂肪状態の期間(例えば5分間)が過ぎると、fat-freeフレームワークセッションが期限切れになるように設定するにはどうすればよいですか?私のWebアプリケーションは、ユーザーがログアウトするまで開かれたままです。無脂肪フレームワークセッションの終了
答えて
まず、PHPセッションgarbage collectorの動作について知る必要があります。デフォルトでは、100回ごとのリクエスト(パフォーマンス目的)ごとにランダムにトリガーし、期限切れのセッションファイル(デフォルト:1440秒)を探して削除します。
また、一部のLinuxディストリビューション(Debianなど)disableがこのガベージコレクタを認識し、それを自分のcronジョブに置き換えていることが必要です。
あなたは、PHPの設定のチェックを開始することができます:GC確率が0である
foreach (['gc_probability','gc_divisor','gc_maxlifetime'] as $k)
echo $k,'=',ini_get("session.$k"),'<br>';
場合、セッションファイルは、これまでに削除されません(またはDebianの上のcronジョブによって除去することができます)。 0ではなく、低い(例えば1/100)場合、セッションファイルはしばらく削除される(ページを100回リフレッシュしようとする)。
理論上、期限が切れるとすぐにセッションファイルを削除するには、確率を1(gc_probability = gc_divisor = 1)に設定します。これは、トラフィックの少ない小さなアプリケーションでは機能しますが、より大きなアプリケーションではパフォーマンスに影響します(GCがリクエストごとに1000以上のセッションファイルをスキャンする必要があるとします)。
この問題を解決する最もクリーンでポータブルな方法は、セッションを期限切れにすることです。ユーザーセッションデータをロードするたびに、前回のセッションデータを確認し、期限切れの場合はセッションデータを消去します。もちろん
$f3->TIMEOUT=7200;// define session timeout here (in seconds)
ini_set('session.gc_maxlifetime',$f3->TIMEOUT);// see note (*) below
$f3->route('GET|POST|DELETE /session',function($f3){
// load session data
$data=&$f3->ref('SESSION.data');
// sign in on POST requests
if ($f3->VERB==='POST') {
$data=['user'=>'John','stamp'=>time()];
$f3->reroute();
}
// sign out on DELETE requests
if ($f3->VERB==='DELETE') {
// sign out
$data=NULL;
$f3->reroute();
}
// check if session has expired
if (is_array($data) && time()>$data['stamp']+$f3->TIMEOUT) {
$data=NULL;
}
// check if user is authenticated
if (is_array($data)) {
echo 'Welcome ',$data['user'],' last time we\'ve seen you was ',date(DATE_W3C,$data['stamp']);
echo '<form action="" method="post"><button>Sign out</button><input type="hidden" name="_method" value="DELETE"/></form>';
$data['stamp']=time();// update session stamp
} else
echo 'You\'re not authenticated';
echo '<form action="" method="post"><button>Authenticate as `John`</button></form>';
});
は、あなたがより良い専用のクラスでは、このすべてのロジックをラップしたい:
はここで小さな例です。
(*)PHP GC maxlifetimeは$f3->TIMEOUT
より小さくしないでください。そうしないと、干渉する可能性があります。 $f3->TIMEOUT
が7200、session.gc_maxlifetime
が1440(デフォルト)に設定されているとします。ユーザーセッションが1440〜7200の間で期限切れになる可能性があります。
- 1. 脂肪フリーのPHP無効なルート
- 2. 無脂肪フレームワーク+ jQueryのAJAX GET =応答
- 3. 脂肪モデルスキニーコントローラCodeIgniterの
- 4. 脂肪矢印「この」スコープ
- 5. リファクタリング脂肪減量剤
- 6. LTOと脂肪LTO-オブジェクト
- 7. .NETとSkinnyコントローラ/脂肪モデルの概念
- 8. のIntelliJ脂肪1瓶アーティファクトは
- 9. F3(無脂肪PHPフレームワーク)、MVC/OOP構造を追加する
- 10. 脂肪無料FrameworkでマルチテキストとHTMLメールを送信する
- 11. R H2O除脂肪多項式分類
- 12. 脂肪ドメインモデル=>非効率ですか?
- 13. 脂肪アロー私が持っている
- 14. 脂肪無料Frameworkのルーティングシステムは、予期しない動作になり
- 15. 脂肪モデル、スキニーViewModelsとダムビュー、最高のMVVMのアプローチ?
- 16. Railsのスキニーコントローラ、脂肪モデル - 必要性より多くのヘルプが
- 17. のiOS脂肪のバイナリと間引きは
- 18. nodejsコードの構造はどうですか?脂肪モデル/スキニーコントローラ
- 19. 異性体n-炭素脂肪族アルカンの計数
- 20. 、要素及び脂肪矢印機能Reduxの例で
- 21. SBT:脂肪瓶をドッキングする方法は?
- 22. sbtアセンブリは脂肪瓶を公開していません
- 23. ドッカーレジストリからマニフェストリスト(脂肪マニフェスト)を取得する
- 24. ビル単一脂肪ジャー - テストクラス私は、マルチモジュールのMavenプロジェクトからの脂肪のjarファイルを構築するために必要な状況にいるよ
- 25. 特定の関数内で変数にアクセスできませんか?無脂肪フレームワーク
- 26. カフカストリームの脂肪瓶を実行しているときの例外
- 27. PlayのためにsbtのUber(脂肪)瓶から除外! Scalaで
- 28. 低脂肪ミルクのような多言語の辞書ですか?
- 29. CakePHPでスキニーコントローラと脂肪モデルを作成しようとするガイダンス
- 30. divを使って作成したHTMLボタンから脂肪を削除する
セッションクッキーの有効期間を制限する方が簡単ではありませんか?すなわち '$ f3-> set( 'JAR.expire'、strtotime( '+ 5分'));' – ikkez