2012-10-30 14 views
8

すべてのページのロード時に、私はsession_start()を実行して現在のセッションを再開します。 session.gc_maxlifetimeはいつからカウントされますか?最初にsession_start()が呼び出され、そのセッションのクッキーが設定されていますか?または、タイマーは毎回session_start()に再起動しますか?約24分にsession.gc_maxlifetimeセットでセッションはいつカウントを開始しますか?

このタイムラインでセッションデータはゴミでなければなりません

1. 12:00:00 First page load, session_start(), session cookie created 
2. 12:10:00 page load, session_start() 
3. 12:26:00 page load, session_start() 
4. 12:55:00 page load, session_start() 

を収集タイマーが最初のページのロードsession_start()に起動した場合、私はそれが負荷3にゴミ集まる期待。しかし、それはすべてのsession_start()をリセットした場合、それは私が、私はsession_start()を実行するページを呼び出すために、JavaScriptの心拍数分ごとに行うことができますので、それが後者のそれ期待しています負荷4

まで収集しないでしょう。

前者の場合、session.gc_maxlifetimeはセッションクッキーの作成からカウントを開始しますが、カウントをリセットするには破壊/再作成またはregenerate_idが必要ですか?

+0

デフォルトのセッションハンドラを使用していますか、それとも別のものを使用していますか? – wgcrouch

+0

はこの哲学ですか、それとも解決しようとしている問題がありますか? –

+0

デフォルトセッションハンドラ –

答えて

2

最後のsession_start()コールのOR/ANDから最後に書き込まれた時刻です。私の推測は、PHPガベージコレクタが削除する必要があるかどうかを判断するために使用する「最後に変更された」タイムスタンプを変更するので、私の推測は後者です。この場合、session_start()を使用する最後のスクリプトか、session_write_ close()を呼び出すことで明示的に終了するスクリプトからカウントを開始します。

P.S.これにより、「ハートビート」が素敵でシンプルに(1行で)作成されます。http://prototypejs.org/api/ajax/periodicalUpdater

関連する問題