PHP의 SESSION 메커니즘 분석

小云云
풀어 주다: 2023-03-17 08:36:01
원래의
1678명이 탐색했습니다.

기본 메커니즘은 디스크 파일을 사용하여 PHP 세션을 구현합니다. php.ini 구성: session.save_handler = files

1, session_start()

A, session_start()는 세션 메커니즘의 시작입니다. 세션이

PHP 자체 가비지 수집이 유효하지 않습니다. SESSION 재활용에는 파일 삭제가 필요합니다. 이 확률은 php.ini의 구성에 따라 결정됩니다.

그러나 일부 시스템에는 session.gc_probability =0이 있으며 이는 확률이 0임을 의미합니다. 가비지 수집은 cron 스크립트를 통해 구현됩니다.

session.gc_probability =1
session.gc_divisor =1000
session.gc_maxlifetime =1440//过期时间 默认24分钟
//概率是 session.gc_probability/session.gc_divisor 结果 1/1000,
//不建议设置过小,因为session的垃圾回收,是需要检查每个文件是否过期的。
session.save_path =//好像不同的系统默认不一样,有一种设置是 “N;/path”
//这是随机分级存储,这个样的话,垃圾回收将不起作用,需要自己写脚本
로그인 후 복사

B. Session은 현재 $_COOKIE[session_name()]이 있는지 확인합니다. session_name()은 session_id를 저장하는 COOKIE 키 값을 반환합니다.

이 값은 php.ini

session.name = PHPSESSID //默认值PHPSESSID
로그인 후 복사

C에서 찾을 수 있습니다. 존재하지 않으면 A session_id가 생성되고 생성된 session_id를 COOKIE 값으로 클라이언트에 전달합니다.

이 단계는 setcookie() 작업을 수행하는 것과 동일하며 COOKIE입니다.

이전에는 출력이 없습니다. PHP에는 session_regenerate_id()라는 또 다른 함수가 있습니다.

setcookie(session_name(),
session_id(),
session.cookie_lifetime,//默认0
session.cookie_path,//默认’/’当前程序跟目录下都有效
session.cookie_domain,//默认为空
)
로그인 후 복사

D. 존재한다면 session_id =$_COOKIE[session_name];

그런 다음 session.save_path에 지정된 폴더로 이동하여 'SESS_'.session_id()라는 파일을 찾습니다.

내용을 읽어보세요. 파일을 저장하고 직렬화한 다음 $_SESSION

에 넣습니다. $_SESSION

에 값을 할당합니다. 예를 들어 새 값 $_SESSION['test'] ='blah'를 추가하면 이 $_SESSION만 유지됩니다.

마지막으로 session_id로 지정된 폴더에 $_SESSION 값을 쓴 후 관련 리소스를 닫습니다. 이 단계에서는 session_id를 변경하는 작업을 수행할 수 있습니다.

예를 들어 이전 session_id를 삭제하고 새 session_id를 생성합니다. 예를 들어 Drupal의 익명 사용자는 로그인할 때 SESSION을 사용해야 합니다. 새로운 session_id

if (isset($_COOKIE[session_name()])) {
setcookie(session_name(),”,time() 42000,’/’);//旧session cookie过期
}
session_regenerate_id();//这一步会生成新的session_id
//session_id()返回的是新的值
로그인 후 복사

위 내용은 PHP의 SESSION 메커니즘 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!