>  기사  >  백엔드 개발  >  PHP에서 세션 저장 메커니즘을 다시 작성하는 방법

PHP에서 세션 저장 메커니즘을 다시 작성하는 방법

不言
不言원래의
2018-07-10 18:00:463224검색

PHP에서 세션 저장 메커니즘을 다시 작성하는 방법

이 글은 주로 PHP에서 세션 저장 메커니즘을 다시 작성하는 방법을 소개합니다. 특정 참조 값이 있습니다. 이제는 필요한 친구들이 참조할 수 있습니다.

세션 데이터 영역

파일 양식은 서버 운영 체제와 함께 임시 디렉터리에 저장됩니다!

세션 데이터 영역이 너무 많으면 파일 형태로 저장하면 작업 속도가 느려집니다. 디스크 읽기 및 쓰기(IO, 입출력) 오버헤드가 매우 높습니다.

실제 프로젝트에서는 세션 데이터를 더 빠르게 저장하기 위해 다른 방법을 사용할 것입니다. 일반적인 방법: 데이터베이스, 메모리.

설명하기 위해 데이터베이스 저장소를 예로 들어보겠습니다. 세션 데이터는 데이터베이스에 저장됩니다!

세션 데이터 영역과 직접 관련된 작업을 다시 작성하세요.

가장 기본적인 작업은 읽기 및 쓰기 2개뿐입니다!

1: 읽기와 쓰기를 완료할 수 있는 함수 2개를 정의합니다.

둘: 읽기 및 쓰기가 필요할 때 사용자 정의 읽기 및 쓰기 기능을 사용하도록 세션 메커니즘에 알립니다.

관련 주제 추천: php 세션(그림, 텍스트, 동영상, 사례 포함)

읽기 및 쓰기를 완료할 수 있는 2가지(실제로 필수 관련 기능 총 6개) 기능을 정의합니다

세션 메커니즘을 알리고, 가 읽고 써야 할 때 사용자 정의 읽기 및 쓰기 함수를 사용하여 완료합니다.

Session_set_save_handler(
开始函数,结束函数,读函数,写函数,删除函数,GC函数
);

는 사용자 정의 함수를 세션 저장소에 설정하는 데 사용됩니다. 관련 기능.

위 구문은 위의 6개 함수에 대한 호출이 아니라 단지 설정 알림일 뿐입니다. 이 6개 함수는 세션 메커니즘이 특정 시점까지 실행될 때만 호출됩니다! 예를 들어 세션을 열 때만 sessRead()를 호출하면 됩니다

세션을 정기적으로 사용

하여 세션 메커니즘을 엽니다

작업 $_SESSION$_SESSION

 

创建session表

该session中,每条记录,就是一个session数据区,相当于原来的一个session文件。

表结构:

 

读操作:sessRead()

  谁调用,谁传参!

在PHP的session机制调用该函数时,会将当前的session-ID作为参数传递到函数中:

因此,需要定一个形参,接受传递的session-ID 参数:

需要返回,读取到的session数据字符串。就是sess_content字段的内容。如果没有读到,则返回空字符串即可,表示没有session数据。

写操作:sessWrite()

当PHPsession机制调用该函数执行写操作时,会将 当前session-ID和 需要写入的内容(序列化好的)传递到函数!

需要2个形参来接收:

测试:

 

删除操作:sessDelete()

销毁session时。

执行了PHP函数:

Session_destroy();

세션 테이블 만들기

이 세션에서 각 레코드는 세션 데이터 영역입니다. 원본 세션 파일과 동일합니다.

테이블 구조:

읽기 작업:

sessRead()

호출하는 사람이 매개변수를 전달합니다!

PHP의 세션 메커니즘이 이 함수를 호출하면 현재 세션 ID가 매개변수로 함수에 전달됩니다.

따라서 전달된 세션 ID 매개변수를 허용하려면 형식 매개변수를 지정해야 합니다.

반환해야 합니다. , read 획득한 세션 데이터 문자열입니다. sess_content 필드의 내용입니다. 읽히지 않으면 빈 문자열을 반환하여 세션 데이터가 없음을 나타냅니다.

🎜쓰기 작업: 🎜🎜sessWrite() 🎜🎜🎜PHP 세션 메커니즘이 쓰기 작업을 수행하기 위해 이 함수를 호출하면 현재 세션 ID와 기록(직렬화)될 콘텐츠가 함수에 전달됩니다! 🎜🎜수신하려면 2개의 공식 매개변수가 필요합니다: 🎜🎜🎜 🎜 테스트: 🎜🎜 🎜🎜🎜🎜🎜삭제 작업: 🎜🎜sessDelete()🎜🎜🎜 세션을 삭제할 때. 🎜🎜PHP 함수 실행: 🎜🎜Session_destroy();🎜🎜는 세션을 파괴하고 해당 세션 데이터 영역을 삭제하는 동시에 세션 메커니즘을 닫을 수 있습니다! 🎜🎜 🎜🎜🎜세션 데이터 영역을 삭제해야 하기 때문에 삭제 방법을 추가해야 합니다. 🎜🎜 PHP의 세션 메커니즘은 sessDelete를 호출할 때 현재 세션 ID를 매개변수로 전달합니다. 🎜🎜필요 수신할 공식 매개변수 정의: 🎜🎜🎜🎜🎜🎜가비지 수집 작업: sessGC()🎜🎜🎜 가비지: 서버의 오래된 세션 데이터 영역. , 🎜🎜쓰레기를 판별하는 방법은 무엇입니까? 🎜🎜 세션 데이터 영역이 일정 기간(마지막 쓰기 작업) 이상 사용되지 않은 경우 가비지 데이터로 간주됩니다. 🎜🎜이번의 임계점: 기본 1440s. 구성 가능: 🎜

마지막 쓰기 시간으로 가비지 여부를 판단할 수 있습니다

마지막 쓰기 시간을 기록하려면 필드를 추가해야 합니다.

작성할 때 다음 필드를 업데이트하세요.

sessWrite( ; 시간-1440

삭제하는 방법은 무엇인가요?

session_start() 프로세스 중에 세션 메커니즘이 켜지면 가비지 수집 작업을 수행할 기회가 있습니다. 실행되면 만료된 모든 가비지 데이터 영역이 삭제됩니다.

기본 확률은 1/1000입니다.

확률을 설정할 수 있습니다:

가능성:

기본(제수): # 🎜🎜#

Adjust 확률 테스트:

스크립트 주기 동안 조정하고 ini_set() 함수를 사용하여 완료하는 것이 좋습니다. 세션 메커니즘을 열기 전에 다음을 수행합니다.

Implementing sessGC()

PHP의 세션 메커니즘은 최대 유효 기간을 매개변수로 전달합니다. !

작업 시작

sessBegin

()

# 🎜🎜#:

초기화 작업

이 먼저 실행되도록 보장할 수 있습니다. sessBegin에서 초기 코드를 완성합니다: 예를 들어, 데이터베이스 연결을 초기화합니다: Ending 작업 sessEnd(): # 🎜🎜 #

작업 종료

Return true;

문법 세부정보

세션 메커니즘을 열 때 첫 번째 설정

Session_set_save_handler()는 session_start() 전에 호출됩니다.

세션을 자동으로 열지 마세요! php.ini: session.auto_start=0 🎜#

PHP에서 사용하는 저장 메커니즘:

마지막으로 위의 내용을 변경하는 것이 좋습니다. 사용자에 대한 구성: 사용자 정의를 나타냅니다!

위 내용은 모두의 학습에 도움이 되기를 바랍니다. 더 많은 관련 내용은 PHP 중국어 홈페이지를 주목해주세요!

관련 권장 사항:

폴더를 탐색하여 PHP를 통해 이미지 디렉터리 이름과 파일 이름을 가져오는 방법

#🎜🎜 ## 🎜🎜#foreach 루프 후 PHP가 남긴 배열 참조 문제를 해결하는 방법

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

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