php+redis는 여러 서버의 네트워크 저장 세션을 실현하고 예시를 읽는다

2397 단어
대형 사이트가 동시에 발생하는 문제로 인해 시스템에 괴이한 붕괴성 문제가 발생할 수 있다는 것은 정말 사람을 아프게 한다. 먼저 고려하는 것은 부하 균형 서버가 이것을 처리하는 것이다. 물론 데이터베이스의 성능도 매우 중요하다. 오늘 부하 균형 상황에서session에 대해 어떻게 처리하는지 말하자면 솔직히 session을 처리하지 않아도 된다.그러나 실제 상황에서 사용자들이 매우 고통스러운 문제를 체험할 수 있다. 예를 들어 쇼핑을 할 때 부하 균형 조정 서버를 왔다 갔다 전환하는 과정에서session을 잃어버리면 이럴 때 어색해진다. 사용자들은 내가 뭘 닦는지 답답하고 각종 걱정이 생길 수 있다. 이런 사이트가 무슨 안전 문제가 있는지 등이다.다음은 이 문제의 해결 방안을 설명합니다. php와 redis를 결합시켜session을 저장하도록 설정합니다. 만약에 제가 현재 2개의 (적어도) 서버가 부하 균형을 이루고 있다면:
1, 메인 서버에 php-redis 및 redis 서버를 설치합니다. 이것은 명령행yum이나 apt-get을 실행하는 것은 말할 것도 없고, 보조 서버는 php-redis만 설치해야 합니다. (이 두 서버는 반드시 하나의 네트워크에 있어야 합니다. 그렇지 않으면 외부 네트워크가 안전하지 않습니다)
2, 오세요.ini 파일:
우선 php extension=redis를 보세요.so 켜짐 여부

session.save_handler = redis

session.save_path = "tcp://【redis ip】:6379″  

메인 서버와 보조 서버의 php-redis는 ip (ip 일치 메인 서버의redis-server) 를 연결해야 합니다

redis.conf

bind【redis ip】 

이것은 안전을 위해redis 링크의 비밀번호를 설정합니다.
vim/etc/redis/redis를 엽니다.conf
requirepass 통신 비밀번호 (여기 수정)
ok redis 재부팅 설정:

sudo service redis-server restart

3, Redis 연결 및 검증 테스트:

redis-cli -h 【redis ip】 

redis 링크 비밀번호를 설정하면 데이터에 접근하려고 합니다. AUTH 오류가 발생했습니다. 다음에 실행하십시오.

 > redis-cli

redis ip:6397> keys * 

오케이, 여기까지 99퍼센트 완성했어. 한 발자국도 안 남았어. 각종 리셋액이야.

service apache2 restart

service php5-fpm restart 

4, session이 redis에 기록되었는지 테스트합니다.

 ' ', 'num' => 'http://www.bieanju.com/');
// redis
$redis = $this->connectRedis();
//
// session_id
echo 'session_id:' . session_id() . '
'; //redis session(redis session_id key, string ) echo 'redis_session:' . $redis->get('PHPREDIS_SESSION:' . session_id()) . '
'; echo 'php_session:' . json_encode($_SESSION['class']); print_r($_SESSION['bieanju']); ?>

속히 둘러보세요. 맞아요. 세션이redis에 썼어요. 읽을 수 있어요. ok는 부하가 균형 잡힌session도 기본적으로 해결됩니다. 나머지는 프로젝트가 어떻게 응용되는지 당신의 업무 수요에 달려 있습니다.
마지막으로 php는 세계에서 가장 좋은 언어라고 말씀드릴게요. 허허......

좋은 웹페이지 즐겨찾기