0
ini_set('session.cookie_lifetime', 259200);
ini_set('session.gc_maxlifetime', 259200);
session_start();

サイトのすべてのページに上記のコードが含まれています。ログイン後 3 日間はログイン状態を維持したいのですが、有効期限が切れる前にサイトにアクセスすると、さらに 3 日間ログインしたままになります。基本的に、セッションはユーザーがサイトを離れてから 3 日間維持されます (ユーザーが 3 日以内に戻ってこない場合)。

ただし、上記の方法にもかかわらず、セッションが約 1 日存続し、その後終了することに気付きましたini_set。おそらくそれは私のウェブホストの php.ini であると考えましたが、これは私のローカルマシンでも行われます。

ini_set目的の効果を得るためにできる他の呼び出しはありますか? これらは機能していないようですが、1日は生き続けます。

4

1 に答える 1

1

ただし、セッションのサイズが大きくなると、さまざまな癖に遭遇します。現在のバージョンについてはわかりませんが、PHP 5.1.x は session_start(); でセッション全体をメモリにロードしていました。20 MB のセッションと 50 人の同時ユーザーを使用すると、スクリプトはディスク アクセス速度によって大幅に制限され始めます (別名「スクリプトの起動が糖蜜のように遅い」-セッションだけで GB の RAM を占有しているため、サーバーは絶対に必要ありません)。交換を開始します); 最後に、RAM にできるだけ多くのセッションを保持する専用のボックスを用意し、フロントエンド ボックスは NFS 経由でセッションにアクセスしました (このケースでは役に立ちましたが、これはやり過ぎかもしれません)。

多くの同時ユーザーとディスク上のセッション ストレージの場合、セッションの一時ファイルの数によって、ファイル システムの制限 (たとえば、1 つのディレクトリに格納できるファイルの数) やその他の制限 (ボックスが同時に 4096 個のオープン ファイルのみを許可するように構成されています)。これは実際にはセッション固有のものではありませんが、セッション処理によってトリガーされる可能性があります。

于 2013-10-08T02:48:12.737 に答える