ホームページ バックエンド開発 PHPチュートリアル PHPのログアウトパフォーマンス

PHPのログアウトパフォーマンス

Jun 13, 2016 pm 12:43 PM
cookie php session start the

PHPログアウト関数

phpマニュアルの書き込み
session_destroy() は、現在のセッションに関連付けられたすべてのデータを破棄します。セッションに関連付けられたグローバル変数の設定は解除されません。また、セッション変数を再度使用するには、session_start() を実行する必要があります。

ユーザーをログアウトするなど、セッションを完全に強制終了するには、セッション ID の設定も解除する必要があります。セッション ID の伝播に Cookie が使用されている場合 (デフォルトの動作)、セッション Cookie も設定解除されます。 setcookie() を削除する必要があります。

?

Baidu Knows が書きました
session は、session_start() 中に確立されたセッションです。
$_SESSION はグローバル配列であり、他のグローバル配列と何ら変わりません。 PHP はセッションを作成するときに、セッションの内容を保存するグローバル配列を作成します。この配列はたまたま $_SESSION と呼ばれ、私たちが作成する他の配列と何ら変わりません。
session_start() が実行されると、セッションが開かれます。まず、セッションが作成されていない場合は、システムの tmp ディレクトリにセッション ファイルが作成され (デフォルト、カスタマイズ可能)、現在のセッションの実行スクリプトが作成されます。作成されたグローバル配列 $_SESSION、h$_SESSION はこの時点では空の配列です。セッションが存在する場合は、セッション ファイルの内容を読み取り、$_SESSION 配列を作成します。
session_destroy() は、現在のセッションに関連付けられたすべてのデータを破棄します。セッションに関連付けられたグローバル変数の設定は解除されません。また、セッション変数を再度使用するには、セッション Cookie の設定も解除されません。 session_start() を呼び出す必要があります。
セッションのグローバル変数とセッション関連の Cookie は削除されず、セッションが終了するだけです。通常のグローバル変数と同様に、必要ない場合は unset() することができます。セッションを再度開きたい場合は、もう一度 session_start() する必要がありますが、 session_start() を再確立すると、 session_start() は $_SESSION 配列を再初期化します。

?

<?php
session_start();
echo var_dump($_SESSION);
session_destroy();
echo var_dump($_SESSION);
session_start();
echo var_dump($_SESSION);
?>
ログイン後にコピー

?結果は

です
array(4) { ["username"]=> string(2) "xx" ["user_id"]=> string(1) "7" ["user_level"]=> string(1) "0" ["signed_in"]=> bool(true) }
array(4) { ["username"]=> string(2) "xx" ["user_id"]=> string(1) "7" ["user_level"]=> string(1) "0" ["signed_in"]=> bool(true) }
array(0) { } 
ログイン後にコピー

?

http://www.nowmagic.net/php/php_SessionPrinciple.php が書きました


PHP SESSION 原則

セッションはサーバー側でユーザーのセッション データを維持するためのメソッドであり、対応する Cookie はクライアント側でユーザー データを維持するためのものであることがわかっています。 HTTP プロトコルはステートレス プロトコルであり、サーバーが応答すると、ブラウザーとの接続が失われます。Netscape では、クライアントがページ間でデータを交換できるように、最初にブラウザーに Cookie が導入されました。多くのユーザーのデータはどうなるのでしょうか?

まず、サーバーがクライアントを識別できるように、クライアントとサーバーに 1 つずつ接続する必要があります。一意の識別には、Cookie または GET による指定の 2 つの方法を使用することをお勧めします。 PHP のデフォルト設定では、セッションの使用時に「PHPSESSID」という名前の Cookie が作成されます (php.ini の session.name 値を変更することで指定できます)。クライアントが Cookie を無効にしている場合は、セッション ID を渡すように指定することもできます。サーバー経由 (php.ini の session.use_trans_sid などのパラメーターを変更)。

サーバー側の session.save_path ディレクトリを見ると、sess_vv9lpgf0nmkurgvkba1vbvj915 に似たファイルが多数見つかります。これは、実際にはセッション ID「vv9lpgf0nmkurgvkba1vbvj915」に対応するデータです。真実はここにあります。クライアントはセッション ID をサーバーに渡します。サーバーは、読み取り時に、ファイルの内容を逆シリアル化してから、セッション値を取得します。書かれた。

これは事実なので、サーバーがセッションをサポートしていない場合、またはセッションをカスタマイズしたい場合は、DIY で PHP の uniqid を使用して重複しないセッション ID を生成し、セッションのコンテンツを保存する場所。MySQL データベースにセッションを保存する方法についても学習できます。
セッションを使用する前に session_start() を実行する必要があるのはなぜですか?

原理を理解すると、いわゆるセッションは実際にはクライアント上のセッション ID であり、新しいセッションを作成する前に session_start() を実行すると、サーバーに Cookie を植えて準備するように指示されます。セッション ファイル、そうでない場合は、セッションのコンテンツを保存する方法は? セッションを読み取る前に session_start() を実行すると、サーバーはセッション ID に従ってセッション ファイルを迅速にデシリアライズするように指示されます。

session_start() の前に実行できるセッション関数は 1 つだけです。 session_name(): セッション名を読み取るか指定します (たとえば、デフォルトは「PHPSESSID」です)。これは当然 session_start の前に実行する必要があります。
セッションはシステム パフォーマンスに影響します

セッションは、アクセス数が多い Web サイトのシステム パフォーマンスに影響します。同じディレクトリに 10,000 個を超えるファイルがある場合、パフォーマンスに影響を与える理由の 1 つは、ファイル システムの設計です。ファイルサイズの配置には非常に時間がかかります。PHP はセッション ディレクトリ ハッシュをサポートしています。php.ini で session.save_path = "2;/path/to/session/dir" を変更すると、セッションが 2 つのレベルで保存されます。サブディレクトリ、それぞれ ディレクトリには 16 個のサブディレクトリ [0~f] がありますが、PHP セッションはディレクトリの作成をサポートしていないようです。事前にこれらのディレクトリを作成する必要があります。

もう 1 つの問題は、小さなファイルの効率です。一般に、セッション データはそれほど大きくありません (1 ~ 2K)。ディスク上に多数のファイルが存在する場合、IO 効率は確実に低下します。 PHP マニュアルでは Reiserfs ファイル システムの使用を推奨していますが、Reiserfs の作者は妻を殺害し、SuSE も Reiserfs を放棄しました。

実際、セッションを保存するには多くの方法があり、php -i|grep "Registered save handlers" を通じて表示できます。たとえば、Registered save handlers => files user sqlite eaccelerator はファイルを通じて表示できます。 users、sqlite、eaccelerator 保存するには、サーバーに memcached がインストールされている場合、mmcache のオプションもあります。もちろん、MySQL、PostgreSQL など、他にもたくさんあります。どれも良い選択です。
セッションの同期

フロントエンドには多数のサーバーがある可能性があり、ユーザーはサーバー A にログインし、セッション情報を設定し、Web サイトのいくつかのページにアクセスしてサーバー B にジャンプする可能性があります。今回はサーバーBにセッション情報がなく、特別な処理を行っていないため、問題が発生する可能性があります。

セッション同期には色々な種類がありますが、memcachedやMySQLに保存する場合は、同じ場所に指定するだけで簡単です。均一に。

もう 1 つの方法は、暗号化された Cookie を使用することです。ユーザーがサーバー A にログインすると、ユーザーがサーバー B にアクセスしたときに、セッションが存在するかどうかを確認します。もちろん問題はありません。そうでない場合は、Cookie が有効であるかどうかを確認し、有効な場合はサーバー B でセッションを再確立します。この方法は、Web サイトに多数のサブチャネルがあり、サーバーが同じコンピュータ ルームにない場合に、均一にログインしたい場合に非常に便利です。

もちろん、別の方法は、負荷分散層でセッションを維持し、訪問者を特定のサーバーにバインドすることであり、セッションの同期は必要ありません。すべては運用および保守レベルのものです。セッションがシステムのパフォーマンスに影響を与えると誰もが言うからといって、臆病になる必要はありません。問題を攻撃したり隠したりする余裕がない場合は、それが重要です。ここにはふさわしくありません。

?删除session和相关的cookie的方法

<?php
// Initialize the session.
// If you are using session_name("something"), don't forget it now!
session_start();

// Unset all of the session variables.
$_SESSION = array();

// If it's desired to kill the session, also delete the session cookie.
// Note: This will destroy the session, and not just the session data!
if (ini_get("session.use_cookies")) {
    $params = session_get_cookie_params();
    setcookie(session_name(), '', time() - 42000,
        $params["path"], $params["domain"],
        $params["secure"], $params["httponly"]
    );
}

// Finally, destroy the session.
session_destroy();
?>
ログイン後にコピー

?

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホット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衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

今まで知らなかったことを後悔している 7 つの PHP 関数 今まで知らなかったことを後悔している 7 つの PHP 関数 Nov 13, 2024 am 09:42 AM

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

母音を文字列にカウントするPHPプログラム 母音を文字列にカウントするPHPプログラム Feb 07, 2025 pm 12:12 PM

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

PHPでHTML/XMLを解析および処理するにはどうすればよいですか? PHPでHTML/XMLを解析および処理するにはどうすればよいですか? Feb 07, 2025 am 11:57 AM

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

PHPでの後期静的結合を説明します(静的::)。 PHPでの後期静的結合を説明します(静的::)。 Apr 03, 2025 am 12:04 AM

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? Apr 03, 2025 am 12:03 AM

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。

See all articles