2009-09-22 2 views

답변

4

가끔 DB에 세션 데이터를 저장하는 몇 가지 이유가 있습니다. 여기에 두 개의 가장 큰 있습니다 : 공유 서버는 공유 서버에서 실행하는 경우에

  1. 안전 문제가, 기회는 당신의 임시 디렉토리에 그들의 방법을 참견하기 위해 서버의 다른 사용자가 쉽게한다는 것이다 거기에 저장 한 세션 데이터에 액세스 할 수 있습니다. 이것은 도 아니지만 공통이지만, 일 수 있습니다.
  2. 복수 서버 사용 하나 이상의 서버를 사용할 경우 세션 데이터를 데이터베이스에 저장하는 것이 가장 좋습니다. 그렇게하면 전체 서버 스택 (또는 얼마나 큰지에 따라 팜)에서 데이터를 쉽게 사용할 수 있습니다. 이것은 또한 플랫 파일 시스템을 통해 얻을 수 있지만 일반적으로 데이터베이스를 사용하는 것이 더 우아하고 쉬운 솔루션입니다. 내가 하지에 대한 데이터베이스를 사용하여 생각할 수

있는 유일한 방법은 단순히 당신이 실행됩니다 쿼리의 수입니다. 각 페이지로드마다 세션 데이터를 수집하기위한 추가 쿼리가 생성됩니다. 그러나, 하나의 작은 추가 쿼리가 그렇게 많은 차이를 만들어서는 안됩니다. 위의 두 가지 요점은이 작은 비용보다 중요합니다.

조금 도움이 되었습니까?

0

세션 파일이 저장된 디렉토리에 액세스 할 수있는 사용자를 제어 할 수없는 공유 호스트에서. 이 경우 DB에 세션을 저장하면 더 나은 보안을 제공 할 수 있습니다.

그리고 경험이없는 한 가지 시나리오가 있습니다. 그러나 현실적인 시나리오라고 생각합니다.
부하가 분산 된 서버 팜에서 한 사용자의 후속 요청을 여러 서버로 발송할 수 있습니다. 이 경우 하나의 중앙 DB 서버를 선택할 수 있습니다. 이러한 시나리오에서 중앙 집중식 세션 저장소가 없으면 요청 당 서버를 전환 할 수 있으므로 사용자의 세션 데이터가 손실됩니다.

0

주어진 사용이 항상 동일한 서버로 전송되도록 보장하지 않는로드 밸런싱 mecanism와 여러 서버를 사용하는 큰 차이가있다 : 파일 기반으로

  • 은 세션에서 사용자가 이전 페이지를 제공 한 서버와 다른 서버에로드 균형을 조정하면 해당 세션을 포함하는 파일을 찾을 수 없으며 (다른 서버에있는 것처럼) 세션을 보유하지 않습니다 데이터
  • 데이터 기반 또는 memcached 기반 세션에서 세션 데이터는 모든 서버에서 사용할 수 있습니다. 실제로이 상황에서는 꽤 좋습니다.

일부 공유 호스팅을 사용할 때 차이점이 있습니다. 파일 기반 세션에서 서버의 "임시"디렉토리 (예 :/tmp)에있는 경우 세션 파일을 읽을 수 있으며, 서버의 구성에 따라 다릅니다. DB 기반 세션에서는 각 사용자마다 다른 DB 및 DB 사용자가 있으므로이 문제는 존재하지 않습니다.위의 게시물에 추가

0

:

  • 데이터베이스 세션 (세션 테이블이 메모리 종류입니다) 빠릅니다.
  • 파일 기반 세션을 사용할 때 스크립트가 끝날 때까지 세션 파일이 잠 깁니다. 따라서 사용자는 서버에서 동시에 2 명의 작업을 할 수 없습니다. 이는 다운로드 서버를 작성할 때 예를 들어 중요합니다. 사용자가 파일을 다운로드하면 스크립트가 세션 파일을 잠그지 않고 파일을 그에게 보냅니다. 그리고 사용자는 동시에 파일 아카이브의 내용을 탐색 할 수 없습니다.
관련 문제