백엔드 개발 PHP 튜토리얼 세션 저장 Redis의 대체 방법

세션 저장 Redis의 대체 방법

Jul 30, 2016 pm 01:31 PM
function return session this

php는 기본적으로 파일을 사용하여 세션을 저장합니다. 동시성이 크면 효율성이 매우 낮습니다. Redis는 높은 동시성을 매우 잘 지원하므로 Redis를 사용하여 파일 저장 세션을 대체할 수 있습니다.
PHP의 session_set_save_handler 함수의 기능과 사용법을 소개합니다. 이 함수는 사용자 수준의 세션 저장 기능(예: 열기, 닫기, 쓰기 등)을 정의합니다. 프로토타입은 다음과 같습니다.

<code>bool session_set_save_hanler(callback open,callback close,callback read,callback write,callback destory,callback gc)
</code>
로그인 후 복사

이 함수를 사용하기 전에 php.ini 구성 파일에서 session.save_handler 옵션을 user로 설정하십시오. 그렇지 않으면 session_set_save_handle이 적용되지 않습니다.

다음은 Redis를 이용해 세션을 저장하는 예이다.

세션 관리 클래스인 sessionManager를 작성합니다. 코드는 다음과 같습니다.

<code><?php

class SessionManager {
    private $reids;
    private $sessionSavePath;
    private $sessionName;
    private $sessi

    public function __construct() {
        $this->reids=new Redis();
        $this->reids->connect('127.0.0.1',6379);

        $retval=session_set_save_handler(
            array($this,"open"),
            array($this,"close"),
            array($this,"read"),
            array($this,"write"),
            array($this,"destroy"),
            array($this,"gc")
        );
}

public function open($path,$name) {
    return true;
}

public function close() {
    return true;
}

public function read($id) {
    $vale=$this->reids->get($id);
    if($vale) {
        return $vale;
    }else {
        return '';
    }
}

public function write($id,$data) {
    if($this->reids->set($id,$data)) {
        $this->reids->expire($id,$this->sessionExpireTime);
        return true;
    }
    return false;
}

public function destroy($id) {
    if($this->reids->delete($id)) {
        return true;
    }
    return false;
}

public function gc($maxlifetime) {
    return true;
}

    public function __destruct() {
        session_write_close();
    }
}

?>
</code>
로그인 후 복사

SessionManager 생성자는 주로 Redis 서버에 연결하는 데 사용되며, session_set_save_handler 함수를 사용하여 세션 콜백을 설정합니다. 함수를 열고 session_start 함수를 호출하여 세션 함수를 엽니다. 이 예제의 open, close 및 gc 콜백 함수는 그다지 유용하지 않기 때문에 true를 직접 반환합니다.
쓰기 콜백 함수에서는 세션 ID를 키로 사용하고, 세션 데이터를 Redis 서버에 값으로 저장하고, 세션 만료 시간을 300초로 설정합니다. 읽기 콜백 함수에서는 세션 ID가 Redis 서버에서 데이터를 읽고 이 데이터를 반환하는 키로 사용됩니다. destroy 콜백 함수에서는 세션 ID가 Redis 서버에서 해당 세션 데이터를 삭제하기 위한 키로 사용됩니다.

사용하려면 SessionManager 클래스를 포함하고 SessionManager 개체를 인스턴스화하면 됩니다. 아래에서 session_set.php 파일을 생성하세요.

<code><?php
    include("SessionManager.php");
    new SessionManager(); //开启session管理
    $_SESSION['username']='hezikuang';//创建session变量
?>
</code>
로그인 후 복사

코드를 입력한 후 session_get.php 파일을 생성합니다.

<code><?php
    include("SessionManager.php");
    new SessionManager(); //开启session管理
    echo $_SESSION['username'];
?>
</code>
로그인 후 복사

session_get.php에 액세스하여 성공 여부를 확인할 수 있습니다.

저작권 안내: 이 글은 해당 블로거의 원본 글이므로 블로거의 허락 없이 복제할 수 없습니다.

위 내용은 세션 저장의 대체 방법인 redis를 관련 측면을 포함하여 소개한 내용으로, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

SpringBoot 세션에서 세션 시간 초과를 설정하는 방법 SpringBoot 세션에서 세션 시간 초과를 설정하는 방법 May 15, 2023 pm 02:37 PM

springboot 프로젝트 프로덕션 세션아웃 시간 초과에서 문제가 발견되었습니다. 문제 설명: 테스트 환경에서는 세션아웃 구성이 적용되었는지 확인하기 위해 application.yaml을 변경하여 세션아웃을 구성했습니다. , 프로덕션 환경에 도착하면 만료 시간이 8시간으로 직접 설정되었습니다. 그런데 정오에 고객으로부터 프로젝트 만료 시간이 짧게 설정되어 있다는 피드백을 받았습니다. 30분 동안 아무 작업도 수행하지 않으면 세션이 만료되어 반복 로그인이 필요합니다. 개발 환경 처리 문제를 해결합니다. springboot 프로젝트에는 Tomcat이 내장되어 있으므로 프로젝트의 application.yaml에 구성된 세션 아웃이 효과적입니다. 프로덕션 환경: 프로덕션 환경 릴리스는 다음과 같습니다.

C 언어의 return 사용법에 대한 자세한 설명 C 언어의 return 사용법에 대한 자세한 설명 Oct 07, 2023 am 10:58 AM

C 언어에서 return의 사용법은 다음과 같습니다. 1. 반환 값 유형이 void인 함수의 경우 return 문을 사용하여 함수 실행을 조기에 종료할 수 있습니다. 2. 반환 값 유형이 void가 아닌 함수의 경우 return 문은 함수 실행을 종료하는 것입니다. 결과는 호출자에게 반환됩니다. 3. 함수 실행을 조기에 종료합니다. 함수 내부에서는 return 문을 사용하여 함수 실행을 조기에 종료할 수 있습니다. 함수가 값을 반환하지 않는 경우.

세션 실패를 해결하는 방법 세션 실패를 해결하는 방법 Oct 18, 2023 pm 05:19 PM

세션 실패는 일반적으로 세션 수명 만료 또는 서버 종료로 인해 발생합니다. 해결 방법은 다음과 같습니다. 1. 세션 수명을 연장합니다. 3. 쿠키를 사용합니다. 4. 세션 관리 미들웨어를 사용합니다.

PHP 세션 교차 도메인 문제에 대한 솔루션 PHP 세션 교차 도메인 문제에 대한 솔루션 Oct 12, 2023 pm 03:00 PM

PHPSession의 도메인 간 문제 해결 프런트엔드와 백엔드 분리 개발에서 도메인 간 요청이 표준이 되었습니다. 도메인 간 문제를 처리할 때 일반적으로 세션 사용 및 관리가 포함됩니다. 그러나 브라우저 원본 정책 제한으로 인해 기본적으로 도메인 간에 세션을 공유할 수 없습니다. 이 문제를 해결하려면 도메인 간 세션 공유를 달성하기 위한 몇 가지 기술과 방법을 사용해야 합니다. 1. 도메인 간 세션을 공유하기 위한 쿠키의 가장 일반적인 사용

기능은 무슨 뜻인가요? 기능은 무슨 뜻인가요? Aug 04, 2023 am 10:33 AM

함수는 특정 기능을 포함하는 재사용 가능한 코드 블록으로, 입력 매개변수를 받아들이고 특정 작업을 수행하며 결과를 반환하는 것이 목적입니다. 코드 재사용성과 유지 관리성을 향상시키는 코드입니다.

새로 고침 후 PHP 세션이 사라지면 어떻게 해야 합니까? 새로 고침 후 PHP 세션이 사라지면 어떻게 해야 합니까? Jan 18, 2023 pm 01:39 PM

새로 고침 후 PHP 세션이 사라지는 문제에 대한 해결 방법: 1. "session_start();"를 통해 세션을 엽니다. 2. 모든 공개 구성을 PHP 파일에 작성합니다. 3. 변수 이름은 배열 첨자와 같을 수 없습니다. 4. phpinfo에서 세션 데이터의 저장 경로를 확인하고 파일 디렉터리의 sessio가 성공적으로 저장되었는지 확인합니다.

Java에서 return 및 finally 문의 실행 순서는 무엇입니까? Java에서 return 및 finally 문의 실행 순서는 무엇입니까? Apr 25, 2023 pm 07:55 PM

소스 코드: publicclassReturnFinallyDemo{publicstaticvoidmain(String[]args){System.out.println(case1());}publicstaticintcase1(){intx;try{x=1;returnx;}finally{x=3;}}}# 출력 위 코드의 출력은 간단히 결론을 내릴 수 있습니다. return은 finally 전에 실행됩니다. 바이트코드 수준에서 무슨 일이 일어나는지 살펴보겠습니다. 다음은 case1 메소드의 바이트코드 일부를 가로채서 소스 코드를 비교하여 각 명령어의 의미를 주석으로 표시합니다.

PHP를 사용하여 여러 파일의 세션 데이터를 올바르게 읽고 쓰는 방법 PHP를 사용하여 여러 파일의 세션 데이터를 올바르게 읽고 쓰는 방법 Mar 23, 2023 am 11:12 AM

PHP 세션(Session)을 사용하다 보면 한 파일에서는 정상적으로 세션을 읽을 수 있지만 다른 파일에서는 읽을 수 없는 경우가 있습니다. 세션 데이터는 전체 애플리케이션에서 공유되어야 하기 때문에 혼란스러울 수 있습니다. 이 기사에서는 여러 파일에서 PHP 세션 데이터를 올바르게 읽고 쓰는 방법을 설명합니다.

See all articles