私が調べた限り、次の方法が存在するようですが、
①ini_set('session.gc_maxlifetime',600);
②session_cache_expire(60);
特に、②について、内部的に何が行われているのかわかりませんでした。
すでにマニュアルは確認済みでしょうか。
session.gc_maxlifetime は、データが'ごみ'と みなされ、消去されるまでの秒数を指定します。
gc(ガベージコレクション)の発生確率を設定するsession.gc_probability、session.gc_divisorの設定を適切にしていないと期待したタイミングで削除することはできませんのでご注意ください。
session_cache_expire()はカレントの session.cache_expireの設定を返します。
上記のようにこの関数はsessionのキャッシュの有効期限を返す、あるいは設定するためのものです。
(セッションそのものではなく、キャッシュの設定です。)
キャッシュの設定はsession.cache_limiterがnocacheの時には全く意味がありません。
session.cache_limiterのデフォルトはnocacheです。
(sessionを使う必要があるサイト(例えばオンラインショップなど)の場合「戻る」で戻られると問題になることがあります。)
PHP-usersメーリングリストの上記のスレッドで一定時間経過後にでログアウトさせる方法について論じられていたことがあります。
"セッションの有効期限切れ=ログアウト"とせずに、セッションデータ内に
最終アクセス時間(または有効期限切れ時間)を記録して比較するだけで
実装できます。
この方法を参考にしてみてはいかがでしょうか。
参考になれば幸いです。
ご推察のとおり、私が本件について調べているのは、
自動的にログアウトするための実装を知りたいからです。
ユーザがWebアプリにログインして、一定時間経過後、
何らかの方法の方法で自動的にセッションを終了させ、
その後、ユーザがWebアプリにアクセスしてきたら、
次の方法でトップページにリダイレクトさせようと
考えていました。
if(!isset($_SESSION['login'])){
//トップページにリダイレクト
}
①の方法については、一定時間経過後、セッションが
破棄されるかは session.gc_probability による確率に
依存するようですが、無効にはなのようですから
(ソフトバンク「PHP4徹底攻略実践編」p.52 l.8)、
私の考えはうまくいきそうだと思っていました。
ちなみに、①については、オライリー「初めてのPHP5」p.158 l.4
からの情報です。
②の方法については、そもそもなんで、キャッシュと
セッションの終了が関係があるのかわかりませんでした。
この情報源は、技術評論社「PHPポケットリファレンス」p.502です。
これはセッションの終了に使えないのではないか、この著者の
勘違いではないか、と思います。
以上、私の考えに不備があれば、ご指摘いただければ助かります。
PHPについて、一次情報である
PHPマニュアル http://jp.php.net/manual/ja/index.php
を含め、いろいろ調べていますが、詳細なところのドキュメントが
少なく、あいまいな記述が多いため、ミッションクリティカルな
コードを書くには不安を感じています。
---
セッションの有効期限切れ=ログアウト"とせずに、セッションデータ内に
最終アクセス時間(または有効期限切れ時間)を記録して比較するだけで
実装できます。
---
このやり方が一番無難で確実だと思いました。これで実装したいと思います。
ありがとうございます。