検索
ホームページバックエンド開発PHPチュートリアルPHP のセッションを理解し、セッションの有効期間、セッションの有効期間を制御する_PHP チュートリアル

PHP のセッションとセッション有効期間の制御について理解します

0。
セッションの中国語訳は「会話」といい、本来の意味は、始まりと終わりのある一連の行為・メッセージ、例えば電話をかけるとき、受話器を取るまでの一連の過程を指します。ダイヤルして電話を切ることをセッションと呼ぶことができます。現在の社会におけるセッションの理解は非常に混乱しています。「ブラウザ セッション中、...」という言葉が時々見られますが、ここでセッションとは、ブラウザ ウィンドウが開いてから閉じるまでの期間を指す場合もあります。 「セッション中のユーザー(クライアント)」という文では、ユーザーの一連の行動(通常はログインから商品の購入、チェックアウトまでなど、特定の目的に関連した一連の行動)を指す場合があります。ただし、このようなオンライン ショッピング プロセスは、単につながりを指している場合もあります。その違いは文脈からのみ推測できます
。 ただし、セッションという言葉がネットワーク プロトコルに関連付けられている場合、多くの場合、「接続指向」および/または「状態維持」という 2 つの意味が含まれます。「接続指向」とは、通信する当事者が通信する前にまず接続を確立する必要があることを意味します。電話をかけるなどの通信チャネルでは、相手が電話に出るまで通信を開始できません。 「ステータスの維持」とは、通信相手が一連のメッセージを相互に依存できるように関連付けることができることを意味します。たとえば、ウェイターは、再び来た古い顧客を認識し、その顧客が前回店に 1 ドルを借りていたことを思い出すことができます。 。このカテゴリの例は、「TCP セッション」または「POP3 セッション」です。
この混乱は元に戻せないため、セッションを定義するための統一基準を設けるのは困難です。セッション関連の情報を読むときは、文脈に頼って理解を推測するしかありません。しかし、次のように理解することができます。たとえば、電話をかけるとき、電話をかけた瞬間から電話を切る瞬間まで、電話は接続されたままであるため、この接続状態はセッションと呼ばれます。これは、訪問者と Web サイト全体との間の対話中に常に存在するパブリック変数であり、クライアントが COOKIE をサポートしていない場合、データが正しく安全であることを保証するために、SESSION 変数が使用されます。 Web サイトの訪問者には、一意の識別子、いわゆるセッション ID が割り当てられます。これは、クライアント側の Cookie に保存されるか、URL 経由で渡されます。
SESSION の発明により、HTTP プロトコルの限界が解消されました。HTTP プロトコルはステートレス プロトコルとみなされ、サーバー側で応答が完了すると、サーバーはブラウザとの接続を失います。これは、HTTP プロトコルの本来の目的と一致しています。クライアントは、サーバーに特定のファイルをダウンロードするよう要求するだけで済みます。クライアントとサーバーは、それぞれのリクエストの過去の動作を記録する必要はありません。顧客と自動販売機、または通常の(非会員制)ハイパーマーケット。
したがって、ユーザーの関連情報は SESSION (Cookie も別の解決策) を通じて記録され、ユーザーが Web サーバーに再度リクエストを行うときにこの ID として確認できるようになります。セッションの発明により、ユーザーは複数のページを切り替えるときに自分の情報を保存できるようになります。ウェブサイトのプログラマーなら誰しも経験があると思いますが、各ページの変数は次のページでは使用できません(フォームやURLも実装できますが、非常に不十分な方法です)。一方、SESSIONに登録された変数はグローバルとして使用できます。変数。
それで、SESSIONは何に役立つのでしょうか?オンラインで買い物をするとき、誰もがショッピング カートを使用したことがあります。いつでも選択した商品をショッピング カートに追加し、最後にレジに行って会計を行うことができます。プロセス全体を通じて、ショッピング カートは選択した商品を一時的に保存する役割を果たします。これは、ユーザーの ID 認証やプログラムのステータスを追跡するために使用されます。記録、ページ間のパラメータの受け渡しなど。
SESSION の実装では COOKIE テクノロジーが使用されます。SESSION は、session_id (SESSION 番号) を含む COOKIE をクライアント側に保存します。session_name などの他のセッション変数はサーバー側に保存されます。ユーザーがサーバーにリクエストを送信すると、session_id もサーバーに送信され、session_id を通じてサーバー側に保存されている変数を抽出することで、ユーザーが誰であるかを識別できます。同時に、SESSION が時々失敗する理由を理解するのは難しくありません。
クライアントが COOKIE を無効にしている場合 (IE の「ツール」-「internet="」>「インターネット オプション」をクリックし、ポップアップ ダイアログ ボックスの「セキュリティ」-「レベルのカスタマイズ」をクリックし、「各会話を許可」の COOKIE を変更します) " が無効に設定されている場合)、session_id は渡されず、現時点では SESSION は無効になります。ただし、php5 は Linux/Unix プラットフォーム上の Cookie ステータスを自動的にチェックできます。クライアントが無効になっている場合、システムは自動的に session_id を URL に追加して渡します。 Windows ホストにはこの機能はありません。

1.phpセッション有効期間

PHP のデフォルトのセッション有効期間は 1440 秒 (24 分) です。クライアントが 24 分を超えて更新されない場合、現在のセッションはリサイクルされ、無効になります。
ユーザーがブラウザを閉じるとセッションは終了し、セッションは無効になります。

php.ini の session.gc_maxlifetime を変更してセッションのライフサイクルを設定できますが、この時間を超えた直後にセッション情報が削除されるという保証はありません。 GC は確率で起動されるため、長時間起動しない場合があります。この場合、session.gc_maxlifetime を超えた後も、多数のセッションが引き続き有効になります。


2.session.gc_maxlifetime、session.gc_probability、session.gc_divisor の説明

session.gc_maxlifetime = 30 は、セッション ファイルが 30 秒経過してもアクセスされない場合、そのセッションは期限切れとみなされ、GC リサイクルを待機することを意味します。

GC プロセス呼び出しの確率は session.gc_probability/session.gc_divisor を通じて計算され、session.gc_divisor のデフォルトは 1000 です。 session.gc_probability = 1000 の場合、リサイクルを実行するために session_start() が実行されるたびに GC プロセスが呼び出されます。

session.gc_probability/session.gc_divisor の確率を増やすと役に立ちますが、パフォーマンスに重大な影響を及ぼします。


3. セッションの有効期限を厳密に制御する

(1). memcache/redis を使用してセッションを保存し、有効期限を設定します。memcache/redis のリサイクル メカニズムは確率に基づいていないため、有効期限が切れるとセッションは確実に無効になります。

(2). PHP のみを使用して実装し、セッション クラスを作成し、セッションの書き込み時に有効期限を書き込みます。読み取りの際は、有効期限に基づいて有効期限が切れているかどうかを判断します。

リーリー

デモ:

リーリー

興味がありそうな記事:

    PHPセッション設定の詳細解説(有効期限、無効化、有効期間)
  • PHPセッションとCookie無効解決策を考える
  • php PHP検証セッション無効解決策
  • PHPセッション有効期限セッション。 gc_maxlifetime
  • PHP セッションの有効性の問題

http://www.bkjia.com/PHPjc/1089947.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/1089947.html技術記事 PHP のセッションを理解してセッションの有効期間を制御します。 セッションの有効期間は 0 です。 セッションとは何ですか?セッションの中国語訳は「会話」で、本来の意味は始まりと終わりのある一連のことを指します...
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
誇大広告を超えて:今日のPHPの役割の評価誇大広告を超えて:今日のPHPの役割の評価Apr 12, 2025 am 12:17 AM

PHPは、特にWeb開発の分野で、最新のプログラミングで強力で広く使用されているツールのままです。 1)PHPは使いやすく、データベースとシームレスに統合されており、多くの開発者にとって最初の選択肢です。 2)動的コンテンツ生成とオブジェクト指向プログラミングをサポートし、Webサイトを迅速に作成および保守するのに適しています。 3)PHPのパフォーマンスは、データベースクエリをキャッシュおよび最適化することで改善でき、その広範なコミュニティと豊富なエコシステムにより、今日のテクノロジースタックでは依然として重要になります。

PHPの弱い参照は何ですか、そしていつ有用ですか?PHPの弱い参照は何ですか、そしていつ有用ですか?Apr 12, 2025 am 12:13 AM

PHPでは、弱い参照クラスを通じて弱い参照が実装され、ガベージコレクターがオブジェクトの回収を妨げません。弱い参照は、キャッシュシステムやイベントリスナーなどのシナリオに適しています。オブジェクトの生存を保証することはできず、ごみ収集が遅れる可能性があることに注意する必要があります。

PHPで__invoke Magicメソッドを説明してください。PHPで__invoke Magicメソッドを説明してください。Apr 12, 2025 am 12:07 AM

\ _ \ _ Invokeメソッドを使用すると、オブジェクトを関数のように呼び出すことができます。 1。オブジェクトを呼び出すことができるように\ _ \ _呼び出しメソッドを定義します。 2。$ obj(...)構文を使用すると、PHPは\ _ \ _ Invokeメソッドを実行します。 3。ロギングや計算機、コードの柔軟性の向上、読みやすさなどのシナリオに適しています。

同時性については、PHP 8.1の繊維を説明します。同時性については、PHP 8.1の繊維を説明します。Apr 12, 2025 am 12:05 AM

繊維はPhp8.1で導入され、同時処理機能が改善されました。 1)繊維は、コルーチンと同様の軽量の並行性モデルです。 2)開発者がタスクの実行フローを手動で制御できるようにし、I/O集約型タスクの処理に適しています。 3)繊維を使用すると、より効率的で応答性の高いコードを書き込むことができます。

PHPコミュニティ:リソース、サポート、開発PHPコミュニティ:リソース、サポート、開発Apr 12, 2025 am 12:04 AM

PHPコミュニティは、開発者の成長を支援するための豊富なリソースとサポートを提供します。 1)リソースには、公式のドキュメント、チュートリアル、ブログ、LaravelやSymfonyなどのオープンソースプロジェクトが含まれます。 2)StackOverFlow、Reddit、およびSlackチャネルを通じてサポートを取得できます。 3)開発動向は、RFCに従うことで学ぶことができます。 4)コミュニティへの統合は、積極的な参加、コード共有への貢献、および学習共有への貢献を通じて達成できます。

PHP対Python:違いを理解しますPHP対Python:違いを理解しますApr 11, 2025 am 12:15 AM

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。

PHP:それは死にかけていますか、それとも単に適応していますか?PHP:それは死にかけていますか、それとも単に適応していますか?Apr 11, 2025 am 12:13 AM

PHPは死にかけていませんが、常に適応して進化しています。 1)PHPは、1994年以来、新しいテクノロジーの傾向に適応するために複数のバージョンの反復を受けています。 2)現在、電子商取引、コンテンツ管理システム、その他の分野で広く使用されています。 3)PHP8は、パフォーマンスと近代化を改善するために、JITコンパイラおよびその他の機能を導入します。 4)Opcacheを使用してPSR-12標準に従って、パフォーマンスとコードの品質を最適化します。

PHPの未来:適応と革新PHPの未来:適応と革新Apr 11, 2025 am 12:01 AM

PHPの将来は、新しいテクノロジーの傾向に適応し、革新的な機能を導入することで達成されます。1)クラウドコンピューティング、コンテナ化、マイクロサービスアーキテクチャに適応し、DockerとKubernetesをサポートします。 2)パフォーマンスとデータ処理の効率を改善するために、JITコンパイラと列挙タイプを導入します。 3)パフォーマンスを継続的に最適化し、ベストプラクティスを促進します。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。