セッションはどのように機能しますか?セッション値をどこに保存しますか?セッションの寿命を延ばす方法は?
2 に答える
セッションにより、HTTPは事実上ステートフルなプロトコルになりますが、実際にはステートレスです。セッションデータはクライアント固有ですが、サーバー側に保存され、通常はテキストファイルのシリアル化された配列です。(この動作は、セッションハンドラーを使用してPHPでオーバーライドできます。session_set_save_handler()を参照してください。)
サーバーは、クライアントに、そのクライアントを一意に識別する識別子(セッションID )を含むCookieを提供します。HTTPリクエストが行われると、セッションIDを含むCookieが一緒に送信され、サーバーはクライアントのセッションデータを見つけてロードし、クライアントの仮想状態を復元します。(IDがCookieを介して送信されるのではなく、GETパラメーターとして送信される場合もありますが、それは関係ありません。)
PHPでは、 session_start()を使用してセッションを作成または再開した後、 $_SESSIONスーパーグローバルを使用してセッション状態にアクセスできます。
HTTPはステートレスであるため、サーバーはクライアントがいつ離れるかを知る方法がありません(ブラウザーウィンドウを閉じ、飲み物を買いに出かけます...)。したがって、賢明なことは、それから経過した時間を測定することだけです。彼らの最後の要求、そしてそれがしきい値を超えている場合は彼らがいなくなったと仮定します。この時間は、「セッションタイムアウト」または「セッション存続期間」と呼ばれます。デフォルト値は、php.ini
ファイルまたはini_set()関数を使用して設定できます。詳細については、php.iniのセッションディレクティブに関するセクションを参照してください。
セッションの仕組み: http ://www.tizag.com/phpT/phpsessions.php
セッションの有効期間を延長するには、次のプロパティini_set
を持つ関数を使用します。session.gc_maxlifetime
ini_set('session.gc_maxlifetime', '28800'); // Set maxlifetime to 4 hours
注:同じサーバー上に複数のページがあり、それぞれがセッションを使用している場合(同じ名前のセッションでも、異なる名前のセッションでも構いません)、これらのスクリプトの最小gc_maxlifetimeは、セッションファイルの有効期間になります。