세션 저장 방법 및 구성 파일

PHPz
풀어 주다: 2017-03-05 12:32:55
원래의
2447명이 탐색했습니다.

세션 상태라고도 하는

 세션은 웹 시스템에서 가장 일반적으로 사용되는 상태이며 현재 브라우저 인스턴스와 관련된 일부 정보를 유지하는 데 사용됩니다. 사용자 권한을 제어할 때 Session을 사용하여 사용자 상태를 저장하는 경우가 많습니다. 이 기사에서는 Session의 저장 방법, web.config에서 Session을 구성하는 방법, Session의 수명 주기 등에 대해 설명합니다.

 1. 세션 저장 방법.

세션은 실제로 클라이언트 측 세션과 서버 측 세션으로 구분됩니다.

사용자가 처음으로 웹 서버에 연결하면 서버는 사용자 식별을 위해 SessionID를 사용자에게 배포합니다. SessionID는 24자의 임의 문자열입니다. 사용자가 페이지를 제출할 때마다 브라우저는 HTTP 헤더에 SessionID를 포함하고 이를 웹 서버에 제출하므로 웹 서버는 현재 페이지를 요청하는 클라이언트를 구분할 수 있습니다. 이 SessionID는 클라이언트에 저장되며 클라이언트 세션에 속합니다.

실제로 클라이언트 Session은 기본적으로 쿠키 형태로 저장되기 때문에 사용자가 쿠키를 비활성화하면 서버가 SessionID를 가져오지 않습니다. 이때 url 메소드를 사용하여 클라이언트 세션을 저장할 수 있습니다. 즉, SessionID를 URL에 직접 기재하는 방식입니다. 물론 이 방법은 일반적으로 사용되지 않습니다.

우리가 언급하는 대부분의 세션은 서버측 세션을 의미합니다. 세 가지 저장 방법이 있습니다(사용자 정의된 저장 방법은 여기서 논의하지 않음):

1.1 IIS 프로세스에 저장됨:

IIS 프로세스에 저장하는 것은 세션 저장을 의미합니다. 데이터는 IIS의 실행 프로세스, 즉 inetinfo.exe 프로세스에 저장됩니다. 이는 기본 세션 저장 방법이기도 하며 가장 일반적으로 사용됩니다.

이 방법의 장점은 단순성과 최고의 성능입니다. 그러나 IIS 서버를 다시 시작하면 세션이 손실됩니다.

 1.2. StateServer에 저장

이 저장 모드는 Asp.Net State Service라는 프로세스에 세션 데이터를 저장하는 것을 의미합니다. Asp.Net 작업자 프로세스 또는 IIS 응용 프로그램 풀의 별도 프로세스와 독립적입니다. 이 모드를 사용하면 웹 응용 프로그램을 다시 시작할 때 세션 상태가 유지되고 네트워크의 여러 웹 서버에서 세션 상태를 사용할 수 있습니다.

 1.3. SQL Server 데이터베이스에 저장

SQL Server 데이터베이스에 저장되도록 구성할 수 있습니다. 이러한 구성을 사용하려면 프로그래머는 먼저 SQL Server 데이터 서버를 준비한 다음 .NET 내장 설치 도구를 실행하여 상태 데이터베이스를 설치해야 합니다.

이 방법은 메모리와 디스크에 저장되기 때문에 서버가 중단되었다가 다시 시작된 후에도 여전히 존재합니다.

다음은 이 세 가지 방법을 비교한 것입니다.

 

InProc

StateServer

SQLServer

存储物理位置

IIS进程(内存)

Windows服务进程(内存)

SQLServer数据库(磁盘)

存储类型限制

无限制

可以序列化的类型

可以序列化的类型

存储大小限制

无限制

使用范围

当前请求上下文,对于每个用户独立

生命周期

第一次访问网站的时候创建Session超时后销毁

优点

性能比较高

Session不依赖Web服务器,不容易丢失

缺点

容易丢失

序列化与反序列化消耗CPU资源

序列化与反序列化消耗CPU资源,从磁盘读取Session比较慢

使用原则

不要存放大量数据

 

InProc
StateServer SQLServer
저장소 물리적 위치 IIS 프로세스(메모리) Windows 서비스 프로세스(메모리) SQLServer 데이터베이스(디스크)
저장소 유형 제한 제한 없음 직렬 가능 유형 직렬 가능 유형 유형
저장소 크기 제한 무제한
사용 범위각 사용자에 대해 독립적인 현재 요청 컨텍스트
라이프사이클

웹사이트를 처음 방문하면 생성된 세션은 시간 초과 후 삭제됩니다.

장점 고성능 세션은 웹 서버에 의존하지 않으며 잃어버리기 쉽지 않습니다
단점 쉽게 손실됨 직렬화 및 역직렬화는 CPU 리소스를 소모함 직렬화 및 역직렬화는 CPU 리소스를 소비하며 디스크에서 세션을 읽는 속도가 느립니다
사용 원칙

저장하지 마세요 대용량 데이터

2. web.config에서 세션 구성

Web.config 파일의 세션 구성 정보:

<sessionState mode=

cookieless=

timeout=

stateConnectionString=

sqlConnectionString=

stateNetworkTimeout=

/>
로그인 후 복사

모드는 세션 정보를 저장할 위치를 설정합니다.

— Off는 세션 기능을 사용하지 않도록 설정됩니다.

— InProc는 프로세스에서 세션을 저장하도록 설정됩니다. 이는 ASP의 저장 방식이며 기본값입니다.

 —— StateServer는 Session을 독립적인 상태 서비스에 저장하도록 설정됩니다. SQL Server에서.

 

클라이언트의 세션 정보가 저장되는 Cookieless 세트:

— ture Cookieless 모드를 사용하면 클라이언트의 세션 정보가 더 이상 쿠키를 사용하여 저장되지 않고 다음을 통해 저장됩니다. URL. 예를 들어 URL은 http://www.php.cn/(ulqsek45heu3ic2a5zgdl245)/default.aspx

  — false 기본값인 쿠키 모드를 사용합니다.

시간 초과는 서버가 자동으로 세션 정보를 포기하는 시간(분)을 설정합니다. 기본값은 20분입니다.

StateConnectionString은 상태 서비스에 세션 정보를 저장할 때 사용되는 서버 이름과 포트 번호를 설정합니다(예: "tcpip=127.0.0.1:42424"). 이 속성은 mode 값이 StateServer인 경우 필수입니다. (42424가 기본 포트입니다).

 sqlConnectionString SQL Server에 연결할 때 연결 문자열을 설정합니다. 예를 들어 "데이터 원본=localhost;통합 보안=SSPI;초기 카탈로그=northwind"입니다. 이 특성은 mode 값이 SQLServer인 경우 필요합니다.

StateNetworkTimeout은 StateServer 모드를 사용하여 세션 상태를 저장한 후 웹 서버와 상태 정보를 저장하는 서버 사이의 TCP/IP 연결이 끊어지기까지의 유휴 시간(초)을 설정합니다. . 기본값은 10초입니다.

StateServer와 SqlServer를 사용하여 Session을 저장하는 방법을 알아보겠습니다.

2.1 StateServer

첫 번째 단계는 상태 서비스를 여는 것입니다. "제어판" → "관리 도구" → "서비스" 명령을 순서대로 열고 ASP.NET 상태 서비스를 찾아 해당 서비스를 마우스 오른쪽 버튼으로 클릭하고 시작을 선택합니다.

정식으로 상태 서비스를 사용하여 세션을 저장하기로 결정한 경우 서비스를 자동 시작하도록 수정하는 것을 잊지 마세요. 다시 시작) 서비스 시작을 잊어서 웹 사이트 세션이 작동하지 않게 되는 것을 방지하려면

을 사용하세요. 2단계에서 다음을 추가하세요. stateNetworkTimeout="20"> system.web 노드에 있는 상태 서버의 주소(IP: 서비스 포트 번호)입니다. 지금 이 머신에서 테스트 중이므로 여기서 로컬 머신 주소를 127.0.0.1로 설정하세요. 상태 서비스의 기본 수신 포트는 42422입니다. 물론 레지스트리를 수정하여 상태 서비스의 포트 번호를 수정할 수도 있습니다. (레지스트리를 수정하여 상태 서비스의 포트 번호를 수정하는 방법: 작업 중에 regedit를 입력하여 레지스트리 편집기를 시작합니다. - HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesaspnet_stateParameters 노드를 차례로 열고 Port 옵션을 두 번 클릭합니다. - 베이스를 다음과 같이 선택합니다. )

 2.2 SqlServer

SQL Server에서 InstallSqlState.sql이라는 스크립트 파일을 실행합니다. 이 스크립트 파일은 특별히 세션 정보를 저장하기 위해 SQL Server에 데이터베이스를 생성하고 세션 정보 데이터베이스를 유지 관리하는 SQL Server 에이전트 작업을 생성합니다. 다음 경로에서 파일을 찾을 수 있습니다:

[시스템 드라이브]winntMicrosoft.NETFramework[버전]

그런 다음 쿼리 분석기를 열고 SQL Server 서버에 연결한 후 지금 바로 파일을 열고 구현하다. 잠시 기다리면 데이터베이스와 작업이 생성됩니다. 이때 Enterprise Manager를 열면 ASPState라는 새 데이터베이스가 추가된 것을 확인할 수 있습니다.

모드 값을 SQLServer로 수정합니다. 동시에 sqlConnectionString 값도 수정해야 합니다. 형식은 sqlConnectionString="data source=localhost; Integrated Security=SSPI;"(Windows 통합 인증을 통해 이루어짐)

3. 세션 라이프사이클

세션의 라이프사이클은 실제로 첫 번째 섹션에서 논의되었으며, 이는 다양한 저장 프로시저와 관련됩니다.

4. 세션 순회 및 삭제

4.1 순회:

System.Collections.IEnumerator SessionEnum = Session.Keys.GetEnumerator();
 (SessionEnum.MoveNext())
{
    Response.Write(Session[SessionEnum.Current.ToString()].ToString() +  );
}
로그인 후 복사

 

4.2 파괴: Session.Abandon().

세션 저장 방법 및 구성 파일에 대한 더 많은 튜토리얼을 보려면 PHP 중국어 웹사이트를 주목하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!