PHP는 추가 코드 없이 기본적으로 Redis에 세션을 저장하는 기능을 지원합니다.
Redis가 세션을 저장하기 위해 사용하는 명령은 setex인데, 이는 redis-cli 모니터를 사용한 실시간 모니터링으로 감지할 수 있습니다.
setex 명령 구문:
setex(key, time, value)
여기서 key는 키 값, time은 만료 시간, value는 문자열 유형 값입니다.
구체적인 단계는 다음과 같습니다.
1. 환경
Redis를 사용하여 세션을 저장하려면 먼저 다음 조건을 충족해야 합니다.
Redis 서버가 설치되어 있어야 합니다. 이 예에서는 로컬 서버 Redis, IP: 127.0.0.1, 포트: 6379를 사용합니다.
PHP에는 phpredis 확장 기능이 설치되어 있으며, 아래와 같이 phpinfo()를 통해 확장 기능을 확인할 수 있습니다.
PHP는 정상적으로 Redis에 액세스할 수 있습니다. 테스트 코드는 다음과 같습니다.
<?php $redis = new Redis(); $redis->connect('127.0.0.1', 6379); $count = $redis->exists('count') ? $redis->get('count') : 1; echo $count; $redis->set('count', ++$count);
페이지를 새로고침해 보면 숫자가 늘어나는 것을 보면 Redis 환경이 정상이라는 뜻입니다.
2. PHP 구성
Redis 확장을 설치한 후 다음과 같이 redis가 포함된 phpinfo() 출력에 세션 지원 핸들이 표시됩니다. 최대 만료 시간은 2147483647이며, 이는 16진수로 7fffffff입니다.
따라서 세션 구성의 재활용 시간 session.gc_maxlifetime 값은 이 숫자를 초과할 수 없습니다.
그렇지 않으면 Redis가 setex 명령을 사용하여 세션을 저장할 때 만료 시간은 음수가 되며 이는 키를 직접 삭제하는 것과 같습니다. 저장이 실패할 뿐만 아니라 PHP는 다음 오류도 반환합니다.Warning: Unknown: Failed to write session data (redis). Please verify that the current setting of session.save_path is correct (127.0.0.1:6379) in Unknown on line 0
2.1 php 수정 .ini
php.ini 파일을 열고 다음 두 값을 설정합니다.
session.save_handler = redis session.save_path = "tcp://127.0.0.1:6379"
session.save_path = "tcp://127.0.0.1:6379?auth=password"
2.2 php-fpm.conf 수정
PHP-FPM의 구성 파일 /etc/php-fpm.conf 또는 /etc/php-fpm.d/*.conf에도 세션 구성이 포함되어 있습니다.해당 세션 구성은 php.ini보다 우선순위가 높으며 php.ini의 구성을 재정의합니다.
그러므로 여기서 직접 변경하세요:php_value[session.save_handler] = redis php_value[session.save_path] = "tcp://127.0.0.1:6379"
2.3 PHP 코드
다음과 같이 실행 중인 PHP 코드에서 세션을 구성할 수도 있습니다.ini_set('session.save_handler', 'redis'); ini_set('session.save_path', 'tcp://127.0.0.1:6379');
session_start(); $count = isset($_SESSION['count']) ? $_SESSION['count'] : 1; echo $count; $_SESSION['count'] = ++$count;
:
php 세션(사진, 텍스트, 비디오, 사례 포함)
위 내용은 Redis에 PHP 세션을 저장하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!