ホームページ バックエンド開発 PHPチュートリアル セッションサーバー構成ガイドと使用体験の詳細な分析_PHP チュートリアル

セッションサーバー構成ガイドと使用体験の詳細な分析_PHP チュートリアル

Jul 21, 2016 pm 03:05 PM
session web 1つ そして 使用 ガイド まとめ サーバ 深く行く プログラム 経験 解析する 構成

1. 概要
すべての Web プログラムはセッションを使用してデータを保存します。独立したセッション サーバーを使用すると、負荷分散シナリオでのセッション共有の問題を解決できます。セッションを使用する際のさまざまな経験とテクニックを紹介します

2.セッション、セッションID、Cookieについて
セッションデータはサーバー側に保存される必要があり、セッションIDはCookieに保存されます。ブラウザの有効期限が切れます

サーバーに送信される HTTP リクエストにはセッション ID が含まれており、サーバーはセッション ID に基づいてユーザーのセッション情報を取得します。これは、SessionID が Cookie に保存されるため、Cookie のサイズと数が原因で SessionID オブジェクトが発生しないように注意する必要があります。私たちのプログラムでは、SessionID Cookie は特別な処理を行います:

コードをコピーします コードは次のとおりです:
///
//// & LT;/Returns & GT;
HttpCookie SessionCookie = null; String SessionId = HttpContext.Current.Request.Cookies[ "ASP .NET_SessionId"].Value.ToString();
SessionCookie = new HttpCookie("ASP.NET_SessionId"); SessionCookie.Value = SessionId;
// 中間のコード部分を省略バックアップの SessionID のみを保持し、SessionID ロジックを取得します。 // cookieの総数が20を超えている場合、セッションが失われるのを防ぐために、asp.net_sessionidを書き直します。


三.搭建Session服务器的几种方式
将Session保存在独立的服务器中可以实现在多台Web服务器之间共享Session.虽然我们也可以自己开发Session存储系统, 但是使用ASP.NET自带的存储机制将更加便捷.
.NET提供了5种保存Seission的方式:

方式名称

存储方式 性能

Off

设置为不使用Session功能

InProc

设置为将Session存储在进程内,就是ASP中的存储方式,这是默认值。

性能最高

StateServer

设置为将Session存储在独立的状态服务中。通常是aspnet_state.exe进程.

性能损失10-15%

SQLServer

设置将Session存储在SQL Server中。

性能损失10-20%

Customer

自定制的存储方案

由实现方式确定

我们可以在Web.Config中配置程序使用的Session存储方式.默认情况下是InProc, 即保存在IIS进程中. 关于Off, InProc和Customer本文不做讲解. 相关文章大家都可以在网上搜索到.
下面主要讲解 StateServer 和 SQLServer 的应用.

四.使用 StateServer 模式搭建Session服务器
(1)服务器端配置
1.启动 Asp.net State service服务.(这个服务默认的状态为手动.修改为自动并启动.)
2.修改注册表: [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\aspnet_state\Parameters]
设置 AllowRemoteConnection = 1 , 设置 Port = 42424 (十进制,默认即为42424)
Port是服务的端口号
AllowRemoteConnection 表示是否允许其他机器连接,0为仅能本机使用,1为可以供其他机器使用.

(2)客户端设置
在Web应用程序的Web.Config中, 我们需要修改 / 节点.如果没有
没有则添加(默认使用的是InProc方式)

复制代码 代码如下:

mode="StateServer"
stateConnectionString="tcpip=服务器ip:42424"
cookieless="false"
timeout="60"/>

上面的参数我们可以根据需要修改.

五.使用SqlServer模式搭建Session服务器
(1)服务器端配置
使用SqlServer模式搭建Session服务器端有两种方式. ASP.NET 1.0和1.1版本请使用方式a, 2.0即以上版本请使用方式b.

a.使用SQL文件创建Session数据库
在ASP.NET 1.0和1.1 版本中, 只能使用这种方式.对于2.0及其以上版本,请使用aspnet_regsql.exe工具.(当然此方法也通用2.0版本)
.net提供了数据库安装脚本,可以在机器的windows文件夹中找到:
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\ InstallSqlState.sql
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\ InstallSqlStateTemplate.sql
根据ASP.NET的版本不同, 需要使用不同的SQL脚本. ASP.NET主要有1.1和2.0两个版本,可以在不同的版本文件夹找到这两个SQL.
InstallSqlState.sql 是创建默认名称的数据库"[ASPState]".此SQL可以直接运行.
InstallSqlStateTemplate.sql 可以使用自己指定的数据库保存数据.此SQL需要自己修改后运行, 打开SQL文件将其中 [DatabaseNamePlaceHolder] 替换为自己指定的数据库名称.
执行installsqlstate.sql时不需要指定数据库,可以在任意数据库上执行.此SQL会自己创建新的数据库

b. 使用aspnet_regsql.exe工具
ASP.NET 2.0版本后微软提供了aspnet_regsql.exe工具可以方便的配置Session数据库.该工具位于 Web 服务器上的"系统根目录\Microsoft.NET\Framework\版本号"文件夹中.
使用举例:
aspnet_regsql.exe -S . -U sa -P 123456 -ssadd -sstype p
-S参数:
表示数据库实例名称. 可以用"."表示本机.
-U和-P参数:
表示用户名和密码.
-E参数:
可以再-U –P 与 -E中选择一组. –E表示以当前系统用户通过windows身份验证登录数据库, -U -P则是使用SqlServer用户登录数据库.
-ssadd / –ssremove 参数:
-ssadd表示是添加Session数据库, -ssremove表示移除Session数据库.
sstype 参数:

选项

说明

t

将会话数据存储到 SQL Server tempdb 数据库中。这是默认设置。如果将会话数据存储到 tempdb 数据库中,则在重新启动 SQL Server 时将丢失会话数据。

p

将会话数据存储到 ASPState 数据库中,而不是存储到 tempdb 数据库中。

c

将会话数据存储到自定义数据库中。如果指定 c 选项,则还必须使用 -d 选项包括自定义数据库的名称。

(2)セッションクライアント設定
このルームでは、Web.Config の ノードを変更する必要もあります。デフォルトのデータベース (ASPState ライブラリ) が使用される場合、構成は次のようになります。
コードをコピーします

コードは次のとおりです: mode="SQLServer"
sqlConnectionString="server=192.168.9.151; uid=sa;"

カスタムのデータベース名を使用する場合また、allowCustomSqlDatabase 属性を指定し、データベース接続文字列でデータベースを指定する必要があります:


コードをコピーします

コードは次のとおりです:
mode="SQLServer"allowCustomSqlDatabase=" true"
s qlConnectionString= "server=192.168.9.151;pwd=123456;"

(1) StateServer モード:
1。 Web ファームに同じ があることを確認してください。
2. セッションに保存されるオブジェクトはシリアル化可能です。
3. Web ファーム内の異なる Web サーバーでセッション状態を維持するには、IIS メタベースの Web サイト アプリケーション パス (LMW3SVC2 など) がすべてのサーバーで一貫している必要があります (大文字と小文字が区別されます)。 Machine.Config で構成された HttpModuel モジュール。.NET インストール ディレクトリの Config フォルダーで Web.Config を表示します (バージョン 1.1 は Machine.Config にあります):


コードをコピーします コードは次のとおりです:


モジュールが存在します。
5. StateServer は負荷分散をサポートしていないため、同時実行性が高い場合は、SqlServer の高いパフォーマンスとセキュリティを享受できるように、SqlServer モードを使用することをお勧めします。ただし、ストレージ効率は低下します。
6. .Config の Machine Configuration で、コードをコピーします。


validationKey="123456789012345678901234567890AAAAAAAAAA" decryptionKey="12 3456789012345678901234567890123456789012345678" validation="SHA1" decryption="自動" />


(2)SqlServerモード:

1. セッションに保存されるオブジェクトシリアル化可能です。
2. デフォルトのデータベースを使用する場合、クライアント構成ファイル内のデータベース リンク文字列のユーザーは、ASPState および tempdb ライブラリに対する dbowner 権限を持っている必要があります。
3. SQLServer モードでは、SQL エージェントの完了によってセッションの有効期限が切れます。登録タスクを使用して、SQL エージェントが実行されていることを確認します。そうしないと、期限切れのセッション データをクリーンアップできず、データベース データが増加し続けることになります。
4. SqlServer モードを使用する場合は、Web ファーム内の各サーバーの ASP.NET アプリケーション パスが同じである必要があります。 Web ファーム内のすべての Web サーバーの IIS 構成データベース内の Web サイトのアプリケーション パスを同期します。 Web サイトへのアプリケーション パスでは大文字と小文字が区別されるため、大文字と小文字は同じである必要があります。
5. すべてのマシンの MachineKey は Machine.Config で同じにする必要があります:
コードをコピーします。 コードは次のとおりです:
validationKey="1234567890123456789012345678" 9012345678 90AAAAAAAAA"
復号化キー= = "123456789012345678901234567890123456789012345678"
検証 = "SHA1"
復号化 = "自動"
/>


(3)セッション:
1.セッションサーバーを介してASP.NETとASPの間でセッションを直接共有することはできません:
http://msdn.microsoft.com/zh-cn/ library/aa479313.aspx
2. セッションは、Web サイトの異なるアプリケーションまたは仮想ディレクトリ間で共有できません
3. セッションの有効期限はスライド時間です。
4. セッションは、.NET に付属する値の型を保存します。最高のパフォーマンス 優れています。オブジェクトを保存するとパフォーマンスが低下します。
(4)SessionID:
1.SessionID は URL に保存することもできます。Web.Config ファイルの System.Web/sessionState ノードの Cookiesless 属性を設定するだけです。
コードをコピーします コードは次のとおりです:

アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト「s」から「s」を「」から「s」から - から - - - - - - - - - - - - - - - - - - - - - - - - - セッションIDはユーザーのブラウザに保存されます。
3. ブラウザを閉じて再度アクセスすると、セッション ID が異なります。
4. IE6 ウィンドウを開くたびに、セッション ID が異なります。 IE6 で共有されます。
5. FireFox タブ ページと新しい FireFox ウィンドウのセッション ID は同じですが、フレームセット ページを含むセッションは
で共有できます。


コードをコピーします

コードは次のとおりです:
< Frame src="SessionID.aspx">



サフィックスが .htm で、.htm ファイルが渡されない場合ASP.NET ISAPI 処理後、サーバーの速度に応じて各フレーム ページに異なるセッション ID が生成され、更新後は最後のセッション ID と等しくなります。解決策は、.htm サフィックスを .aspx に変更するか、 .htm ファイルを ASP に転送します。

(5) Session_End イベント:
1. Session_End は InProc モードでのみ使用できます。
2. ブラウザを閉じると、Session_End はトリガーされません。 HTTP はステートレス プロトコルであるため、サーバーはブラウザが閉じられたかどうかを知る方法がありません。
3. Session_End は、セッションが期限切れになるか、Session.Abandon を呼び出した場合にのみトリガーされます。Session.Clear() はデータをクリアするだけで、セッションは削除されません。
4. Session_End はバックグラウンド スレッドによってトリガーされ、ワー​​カー プロセス アカウントを使用して実行されます。そのため、プログラムは、Session_End を使用してデータベースにアクセスするときに、許可の問題を考慮する必要があります。ワーカー プロセス (aspnet_wp.exe) これは、machine.config で指定できるアカウントで実行されます。したがって、Session_End では、整合性セキュリティを使用して SQL に接続すると、接続にワーカー プロセス アカウント ID が使用され、ログイン失敗が発生する可能性があります。6. Session_End は独立したスレッドによって開始されるため、HttpContext オブジェクトは使用できません。 Session_End (Request、Response、Server などのオブジェクトはすべて HttpContext 内にあります)、つまり、Response.Redirect や Server.Transfer などのメソッドは使用できません。

VII. 概要


私は SqlServer モードを使用して社内の複数のサーバーのセッション共有を実装しましたが、サーバーを再起動してもユーザーの予約プロセスは再開されません (予約プロセスに必要なセッションは失われません)。 ) この記事が特定のセッション サーバーのビルダーに役立つことを願っています


http://www.bkjia.com/PHPjc/327659.html
www.bkjia.com

tru​​e

http://www.bkjia.com/PHPjc/327659.html

1. まとめ すべての Web プログラムはセッションを使用してデータを保存します。独立したセッション サーバーを使用すると、負荷分散シナリオにおけるセッション共有の問題を解決できます。...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

GoogleマップをiPhoneのデフォルト地図にする方法 GoogleマップをiPhoneのデフォルト地図にする方法 Apr 17, 2024 pm 07:34 PM

iPhone のデフォルトの地図は、Apple 独自の地理位置情報プロバイダーである Maps です。マップは改善されていますが、米国外ではうまく機能しません。 Googleマップと比べて何も提供するものはありません。この記事では、Google マップを iPhone のデフォルトの地図として使用するための実行可能な手順について説明します。 Google マップを iPhone のデフォルトの地図にする方法 Google マップを携帯電話のデフォルトの地図アプリとして設定するのは、思っているよりも簡単です。以下の手順に従ってください – 前提条件 – 携帯電話に Gmail がインストールされている必要があります。ステップ 1 – AppStore を開きます。ステップ 2 – 「Gmail」を検索します。ステップ 3 – Gmail アプリの横にある をクリックします

iPhoneに時計アプリがない:それを修正する方法 iPhoneに時計アプリがない:それを修正する方法 May 03, 2024 pm 09:19 PM

携帯電話に時計アプリがありませんか?日付と時刻は iPhone のステータス バーに引き続き表示されます。ただし、時計アプリがないと、世界時計、ストップウォッチ、目覚まし時計、その他多くの機能を使用できません。したがって、見つからない時計アプリを修正することは、やるべきことリストの一番上に置く必要があります。これらの解決策は、この問題の解決に役立ちます。解決策 1 – 時計アプリを配置する 誤って時計アプリをホーム画面から削除した場合は、時計アプリを元の場所に戻すことができます。ステップ 1 – iPhone のロックを解除し、App ライブラリ ページに到達するまで左にスワイプを開始します。ステップ 2 – 次に、検索ボックスで「時計」を検索します。ステップ 3 – 検索結果に以下の「時計」が表示されたら、それを長押しして、

VSCode を使用した中国語のセットアップ: 完全ガイド VSCode を使用した中国語のセットアップ: 完全ガイド Mar 25, 2024 am 11:18 AM

中国語での VSCode セットアップ: 完全ガイド ソフトウェア開発では、Visual Studio Code (略して VSCode) が一般的に使用される統合開発環境です。中国語を使用する開発者は、VSCode を中国語インターフェイスに設定すると、作業効率が向上します。この記事では、VSCode を中国語インターフェイスに設定する方法を詳しく説明し、具体的なコード例を示す完全なガイドを提供します。ステップ 1: 言語パックをダウンロードしてインストールします。VSCode を開いた後、左側の

Dnsmasq を DHCP リレー サーバーとして構成する方法 Dnsmasq を DHCP リレー サーバーとして構成する方法 Mar 21, 2024 am 08:50 AM

DHCP リレーの役割は、2 つのサーバーが異なるサブネット上にある場合でも、受信した DHCP パケットをネットワーク上の別の DHCP サーバーに転送することです。 DHCP リレーを使用すると、ネットワーク センターに集中 DHCP サーバーを展開し、それを使用してすべてのネットワーク サブネット/VLAN に IP アドレスを動的に割り当てることができます。 Dnsmasq は、一般的に使用される DNS および DHCP プロトコル サーバーであり、ネットワーク内の動的ホスト構成の管理を支援する DHCP リレー サーバーとして構成できます。この記事では、dnsmasq を DHCP リレー サーバーとして構成する方法を説明します。コンテンツ トピック: ネットワーク トポロジ DHCP リレー上の静的 IP アドレスの構成 集中型 DHCP サーバー上の DHCP リレー D

BTCC チュートリアル: BTCC 取引所で MetaMask ウォレットをバインドして使用する方法は? BTCC チュートリアル: BTCC 取引所で MetaMask ウォレットをバインドして使用する方法は? Apr 26, 2024 am 09:40 AM

MetaMask (中国語ではリトル フォックス ウォレットとも呼ばれます) は、無料で評判の高い暗号化ウォレット ソフトウェアです。現在、BTCC は MetaMask ウォレットへのバインドをサポートしており、バインド後は MetaMask ウォレットを使用してすぐにログイン、値の保存、コインの購入などが可能になり、初回バインドで 20 USDT のトライアル ボーナスも獲得できます。 BTCCMetaMask ウォレットのチュートリアルでは、MetaMask の登録方法と使用方法、および BTCC で Little Fox ウォレットをバインドして使用する方法を詳しく紹介します。メタマスクウォレットとは何ですか? 3,000 万人を超えるユーザーを抱える MetaMask Little Fox ウォレットは、現在最も人気のある暗号通貨ウォレットの 1 つです。無料で使用でき、拡張機能としてネットワーク上にインストールできます。

NetEase メールボックス マスターの使用方法 NetEase メールボックス マスターの使用方法 Mar 27, 2024 pm 05:32 PM

NetEase Mailbox は、中国のネットユーザーに広く使用されている電子メール アドレスとして、その安定した効率的なサービスで常にユーザーの信頼を獲得してきました。 NetEase Mailbox Master は、携帯電話ユーザー向けに特別に作成された電子メール ソフトウェアで、電子メールの送受信プロセスが大幅に簡素化され、電子メールの処理がより便利になります。 NetEase Mailbox Master の使い方と具体的な機能について、以下ではこのサイトの編集者が詳しく紹介しますので、お役に立てれば幸いです。まず、モバイル アプリ ストアで NetEase Mailbox Master アプリを検索してダウンロードします。 App Store または Baidu Mobile Assistant で「Ne​​tEase Mailbox Master」を検索し、画面の指示に従ってインストールします。ダウンロードとインストールが完了したら、NetEase の電子メール アカウントを開いてログインします。ログイン インターフェイスは次のとおりです。

Baidu Netdisk アプリの使用方法 Baidu Netdisk アプリの使用方法 Mar 27, 2024 pm 06:46 PM

クラウド ストレージは今日、私たちの日常生活や仕事に欠かせない部分になっています。中国有数のクラウド ストレージ サービスの 1 つである Baidu Netdisk は、強力なストレージ機能、効率的な伝送速度、便利な操作体験により多くのユーザーの支持を得ています。また、重要なファイルのバックアップ、情報の共有、オンラインでのビデオの視聴、または音楽の聴きたい場合でも、Baidu Cloud Disk はニーズを満たすことができます。しかし、Baidu Netdisk アプリの具体的な使用方法を理解していないユーザーも多いため、このチュートリアルでは Baidu Netdisk アプリの使用方法を詳しく紹介します。まだ混乱しているユーザーは、この記事に従って詳細を学ぶことができます。 Baidu Cloud Network Disk の使用方法: 1. インストール まず、Baidu Cloud ソフトウェアをダウンロードしてインストールするときに、カスタム インストール オプションを選択してください。

iPhoneのカメラとマイクへのアクセスを許可できません iPhoneのカメラとマイクへのアクセスを許可できません Apr 23, 2024 am 11:13 AM

アプリを使用しようとすると、「カメラとマイクへのアクセスを許可できません」というメッセージが表示されますか?通常、カメラとマイクのアクセス許可は、必要に応じて特定の人に付与します。ただし、許可を拒否すると、カメラとマイクは機能しなくなり、代わりにこのエラー メッセージが表示されます。この問題の解決は非常に基本的なもので、1 ~ 2 分で解決できます。解決策 1 – カメラ、マイクの権限を提供する 必要なカメラとマイクの権限を設定で直接提供できます。ステップ 1 – [設定] タブに移動します。ステップ 2 – [プライバシーとセキュリティ] パネルを開きます。ステップ 3 – そこで「カメラ」権限をオンにします。ステップ 4 – 内部には、携帯電話のカメラの許可を要求したアプリのリストが表示されます。ステップ5 – 指定したアプリの「カメラ」を開きます

See all articles