2011-02-07 3 views
0

나는 PHP codeignitor와 MySQL을 개발하는 소셜 웹 사이트를 운영하고 있습니다. 다중 서버 환경을 처리하기 위해 데이터베이스에 사용자 세션을 저장합니다. 현재 데이터베이스는 1 개뿐입니다.소셜 웹 사이트의 사용자 세션 - 논리 질문

1) 여러 데이터베이스 (다중 서버)를 처리하려면 사용자 세션을 어떻게 그리고 어디에 저장해야합니까? 다중 데이터베이스 환경에서 데이터베이스가 작동하지 않는다고 가정합니다.

2) 사용자에게 제공된 세션 ID는 데이터베이스의 자동 증가 또는 응용 프로그램 논리에서 생성 된 것인가? GUID가되어야한다고 가정합니까?

3) 세션 ID와 함께 login_datetime, logout_Datatime, 웹/모바일 등 사용자와 관련된 모든 세션 관련 세부 정보를 기록하는 user_session 테이블이 있습니다. 따라서이 테이블은 2 단계로 작성되어야합니다. 사용자는 로그 오프 할 때 다시 로그인합니다. 질문은 사용자가 시스템이 날짜를 기록하기 위해 따라야하는 논리가 무엇인지를 logsoff 할 때입니까? 이 PK ID는 데이터베이스에 의해 구동되는 자동 기록 값이며 메인 세션 ID가 생성 된 이후에 생성되기 때문에 시스템이 데이터를 쓸 user_session을 어떻게 알 수 있습니까? 그래서 결국 user_session 테이블을 쿼리하여 user_Session ID를 찾은 다음 작성해야합니다.

+0

기본 PHP 세션 메커니즘을 사용해 본 적이 있습니까? –

+0

데이터베이스에 사용자 세션을 저장하는 것이 다중 서버 환경과 관련이 있습니까? 왜 PHP 세션이 당신에게 어울리지 않는가? 어쨌든. 다중 데이터베이스 환경의 문제점은 무엇입니까? 여기에 어떤 특별한 문제가 있습니까? –

+0

memcached for sessions를 사용하면 꽤 잘 작동합니다. – mfonda

답변

0

귀하의 의견은이 문제를 해결할 수있는 가장 좋은 방법에 대한 단서를 제공해주었습니다.

먼저 사이트가 곧 시작되지만 아직 살지 않는 경우 문제를 해결하는 가장 좋은 방법은 다음과 같습니다. 아직이 문제에 대해 걱정하지 마십시오. 당분간 하나의 데이터베이스로 모든 서버를 호스트하십시오. 아무리 훌륭하더라도 모든 사용자가 처음 몇 명의 실제 사용자와 함께 많은 문제를 해결해야 수요가 더 많은 하드웨어를 필요로합니다.

두 번째로 이미지 및 비디오 서버에 사용자의 세션 정보가 필요하지 않은 것 같습니다. 사용자가 비디오가있는 웹 페이지를 요청하고 웹 페이지를 볼 수있는 충분한 액세스 권한이 있으면 추가 인증 확인없이 비디오를 보낼 수 있습니다. 또한이 옵션을 사용하면 콘텐츠 전송 네트워크 (개인적으로 RackSpace Cloudfiles, Akamai와의 제휴 관계)를 사용하여 자신의 서버를 사용하는 것보다 훨씬 향상된 사용자 경험을 얻을 수 있습니다.

행운을 빈다.

+0

실행을 위해 사용자 데이터 용으로 1 데이터베이스가 있고 데이터웨어 하우스 용으로 2 데이터베이스가 있습니다. 동일한 사용자 세션에 데이터를 출력하는 사용자 분석에 사용됩니다. 따라서 마지막 작업 시간대 또는 사용자 로그 오프가 다음과 같이 작성되었으므로 각 사용자 작업이 세션 ID에 매핑되고 다시 세션 끝에 매핑되므로 세션 동안 세션을 만들 때 두 데이터베이스가 동일한 사용자 세션을 다시 설정할 수 있도록해야합니다. 세션 종료 datetime. 그래서 내가 볼 수있는 유일한 방법은 memcache가 맞습니까? – Rohit

+0

같은 데이터베이스에 사용자 데이터 용 테이블 하나와 사용자 분석 용 테이블 하나가있는 것은 어떨까요? – Summer

-1

공유 드라이브에 세션 파일을 저장하여 두 서버에 세션이 존재하도록 할 수 있습니다 (서버의 PHP.ini 버전에서 세션 경로를이 위치로 설정).

+0

두 번째 항목과 관련된 것은 무엇입니까? user_Session은 시스템에서 어떻게 찾습니까? 예 : 오전 2시 30 분에 로그인하고 응용 프로그램에서 세션 ID 456을 부여합니다. 그러면 오전 3시에 50 개의 활동을 로그 오프합니다. 그래서 오전 3시에 세션 ID에 대한 내 세션 로그에 내 로그 오프 날짜가 기록됩니다.따라서 시스템은 로그 오프 날짜를 기록하기 위해 user_session 테이블에서 시스템을 찾기 위해 내 세션 ID를 알아야합니까? – Rohit

+0

session_id (http://php.net/manual/en/function.session-id.php)를 사용하면 PHP가 세션을 참조하기 위해 사용하는 식별자를 얻을 수 있습니다. –

+0

@Rohit 젠체하는 사람이라면, 내장 세션 메커니즘을 조금이라도 이해하지 않으셔도 좋습니다. (범죄는 사실이 아닙니다.) 모든 사용자 요청과 함께 전송되는 세션 ID입니다. 따라서 사용자가 로그 오프 스크립트를 호출하면 클라이언트는 세션 ID 쿠키도 보냅니다. 실제로, 단일 서버 하나를 올바르게 사용하는 방법을 배우기 전까지 다중 서버 구성을 꿈꾸지 마십시오. –