이 글의 내용은 다중 서버 SESSION 공유를 구현하는 PHP에 대한 내용입니다. 이제는 모든 사람과 공유합니다. 도움이 필요한 친구들이 참고할 수 있습니다.
요즘에는 약간 더 큰 웹사이트에는 기본적으로 www.feiniu.com, search.feiniu.com, member.feiniu.com과 같은 여러 하위 도메인이 있습니다. 이러한 웹사이트가 사용자 로그인 정보를 공유해야 한다면 필요합니다. 물론 이 세션 공유를 수행하려면 동일한 기본 도메인이 있어야 한다는 전제가 있습니다.
클라이언트는 PHP 페이지에 접속하여 session_start를 실행하고 session_id를 생성합니다. 일반적으로 우리는 session_id를 쿠키에 저장하고, 클라이언트가 다른 페이지에 접속할 때 세션 내용이 서버에 저장됩니다. session_id는 서비스 터미널로 전달되며, session_id를 통해 세션 콘텐츠를 얻습니다.
프로세스는 이와 같지만 서로 다른 서버는 동일한 클라이언트에 대해 서로 다른 session_id를 생성하므로 서로 다른 서버는 동일한 세션 콘텐츠를 얻을 수 없습니다. 또한, PHP의 기본 SESSION 데이터는 이 서버의 파일 시스템에 별도로 저장됩니다.
따라서 세션 공유를 해결하려면 두 가지 문제를 해결해야 합니다.
1. 여러 서버가 동일한 session_id를 사용합니다
这个比较容易解决,只要在php中设置存session_id的cookie域名为网站主域就可以了 打开PHP.ini, 设置session.cookie_domain = .feiniu.com, 当然也可以在php代码当中设置ini_set("session.cookie_domain","feiniu.com");
1
2
3
3 . 스토리지 엔진 선택 방법
그러나 Memcache는 메모리를 여러 사양의 저장 블록으로 나눕니다. 각 블록에는 크기가 있습니다. 또한 이 방법은 Memcache가 메모리를 완전히 활용할 수 없으며 저장 블록이 부족할 경우 메모리 조각을 생성한다고 판단합니다. 오버플로
"분산"할 필요가 없거나 공유할 필요가 없거나 단순히 서버가 하나만 있을 정도로 작은 애플리케이션의 경우 memcached는 어떤 이점도 가져오지 않습니다. 반대로 시스템 속도를 저하시킵니다. 네트워크 연결에도 리소스가 필요하기 때문에 효율성이 향상됩니다.
Redis 저장소: Memcache에 비해 Redis 액세스는 약간 느립니다. 장점은 다음과 같습니다.
redis는 더 많은 데이터 구조를 지원하고 배열이나 객체를 저장할 수 있지만 Memcache는 문자열만 저장할 수 있습니다. 세션 머신이 다시 시작되면 memcache의 모든 사용자는 세션을 다시 얻어야 하지만 redis는 그렇지 않습니다.
사용자가 갑자기 유입되고 데이터가 많아지면 세션을 저장하는 머신의 메모리가 가득 찼습니다. , Memcache가 작동하고 모든 키가 만료되지 않은 경우 마지막으로 작성된 데이터를 계속 덮어쓰는 반면 Redis는 속도만 느려지고 프로그램 논리에 영향을 주지 않습니다
관련 권장 사항:
위 내용은 PHP는 다중 서버 SESSION 공유를 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!