session_start()
を呼び出すページにヒットした場合。ページを更新する場合、新しいセッションIDが発行されるように、どれくらい待つ必要がありますか?
Php.iniをチェックしてください。session.gc_maxlifetimeに設定されている値は、秒単位のIDライフタイムです。
デフォルトは1440秒(24分)です
http://www.php.net/manual/en/session.configuration.php
編集:一部のコメントが指摘しているように、上記は完全に正確ではありません。セッションライフタイムを実装する理由と方法のすばらしい説明は、ここにあります。
session.gc_maxlifetime
ディレクティブのphp.iniのデフォルト(「gc」はガベージコレクション用)は1440秒または24分です。マニュアルのSession Runtime Configuationページを参照してください。
http://www.php.net/manual/en/session.configuration.php
この定数は、php.iniファイルまたは.httpd.confファイルにアクセスできる場合は変更できます。Webサイトのローカルの.htaccessファイルでも変更できます。 .htaccessメソッドを使用してタイムアウトを1時間に設定するには、サイトのルートディレクトリにある.htaccessファイルに次の行を追加します。
php_value session.gc_maxlifetime "3600"
共有ホストを使用している場合、またはデフォルトを変更していない複数のサイトをホストしている場合は注意してください。デフォルトのセッションの場所は/ tmpディレクトリであり、これらの他のサイトのガベージコレクションルーチンは24分ごとに実行されます(そして、どのくらいの期間should保持されているかに関係なく、プロセス内のセッションを消去します) 。より良い説明については、マニュアルページの 注 または このサイト を参照してください。
これに対する答えは、session.save_pathを使用してセッションを別のディレクトリに移動することです。これはまた、悪人がデフォルトの/ tmpディレクトリから訪問者のセッションをハイジャックするのを防ぐのにも役立ちます。
PHP.net サイトのユーザーによると、セッションを維持するための彼の努力は失敗したため、回避策を講じなければなりませんでした。
<?php
$Lifetime = 3600;
$separator = (strstr(strtoupper(substr(PHP_OS, 0, 3)), "WIN")) ? "\\" : "/";
$DirectoryPath = dirname(__FILE__) . "{$separator}SessionData";
//in Wamp for Windows the result for $DirectoryPath
//would be C:\wamp\www\your_site\SessionData
is_dir($DirectoryPath) or mkdir($DirectoryPath, 0777);
if (ini_get("session.use_trans_sid") == true) {
ini_set("url_rewriter.tags", "");
ini_set("session.use_trans_sid", false);
}
ini_set("session.gc_maxlifetime", $Lifetime);
ini_set("session.gc_divisor", "1");
ini_set("session.gc_probability", "1");
ini_set("session.cookie_lifetime", "0");
ini_set("session.save_path", $DirectoryPath);
session_start();
?>
SessionDataフォルダーには、セッション情報を保持するためのテキストファイルが格納されます。各ファイルの名前は「sess_a_big_hash_here」に似ています。
あなたのPHP設定に依存します...phpinfo()
を使用して、セッションの章をご覧ください。セッションの存続期間に影響するsession.gc_maxlifetime
およびsession.cache_expire
およびsession.cookie_lifetime
などの値があります
編集:マーティンが前に書いているようです
ただし、ほとんどのxampp/ampp /...- setupsおよび一部のLinuxディストリビューションでは、0になっていることに注意してください。これは、スクリプト内で実行するまで(またはシェル経由でダーティになるまで)ファイルが削除されないことを意味します
PHP.INI:
; Lifetime in seconds of cookie or, if 0, until browser is restarted.
; http://php.net/session.cookie-lifetime
session.cookie_lifetime = 0
ini_set('session.gc_maxlifetime', 28800); // 8 * 60 * 60
のようなものも使用できます。