>  기사  >  백엔드 개발  >  Redis에 PHP 세션을 저장하는 방법

Redis에 PHP 세션을 저장하는 방법

藏色散人
藏色散人앞으로
2019-01-09 13:55:243611검색

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()를 통해 확장 기능을 확인할 수 있습니다.

Redis에 PHP 세션을 저장하는 방법

PHP는 정상적으로 Redis에 액세스할 수 있습니다. 테스트 코드는 다음과 같습니다.

<?php
    $redis = new Redis();
    $redis->connect(&#39;127.0.0.1&#39;, 6379);
    $count = $redis->exists(&#39;count&#39;) ? $redis->get(&#39;count&#39;) : 1;
    echo $count;
    $redis->set(&#39;count&#39;, ++$count);

페이지를 새로고침해 보면 숫자가 늘어나는 것을 보면 Redis 환경이 정상이라는 뜻입니다.

2. PHP 구성

Redis 확장을 설치한 후 다음과 같이 redis가 포함된 phpinfo() 출력에 세션 지원 핸들이 표시됩니다. 최대 만료 시간은 2147483647이며, 이는 16진수로 7fffffff입니다.

따라서 세션 구성의 재활용 시간 session.gc_maxlifetime 값은 이 숫자를 초과할 수 없습니다. Redis에 PHP 세션을 저장하는 방법

그렇지 않으면 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

다음으로 php 구성을 수정합니다. 총 3가지 방법 중 하나를 선택하세요.

2.1 php 수정 .ini

php.ini 파일을 열고 다음 두 값을 설정합니다.

session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379"
Redis에 비밀번호가 있는 경우 다음 구성을 사용합니다.
session.save_path = "tcp://127.0.0.1:6379?auth=password"

구성이 완료된 후 PHP-FPM을 다시 시작합니다.

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"

php.ini 구성을 사용하는 경우 이 두 줄을 ;로 주석 처리해야 합니다.

그런 다음 PHP-FPM을 다시 시작하세요

2.3 PHP 코드

다음과 같이 실행 중인 PHP 코드에서 세션을 구성할 수도 있습니다.

ini_set(&#39;session.save_handler&#39;, &#39;redis&#39;);
ini_set(&#39;session.save_path&#39;, &#39;tcp://127.0.0.1:6379&#39;);
3. Test

다음과 같이 PHP 테스트 코드를 작성하세요.

session_start();
$count = isset($_SESSION[&#39;count&#39;]) ? $_SESSION[&#39;count&#39;] : 1;
echo $count;
$_SESSION[&#39;count&#39;] = ++$count;
페이지를 새로고침하여 숫자가 계속 증가하는 것을 확인하면 Redis가 세션을 성공적으로 저장하도록 구성되었음을 의미합니다.

php 중국어 웹사이트 학습 주제

:

php 세션
(사진, 텍스트, 비디오, 사례 포함)

위 내용은 Redis에 PHP 세션을 저장하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 歪麦博客에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제