PHP에서 세션은 사용자 상태 관리를 구현하는 데 중요한 수단입니다. 세션을 통해 서버는 다른 요청간에 사용자 데이터를 저장할 수 있습니다. 그러나 경우에 따라 PHP의 세션 데이터는 특히 스크립트 실행 중에 예외 또는 조기 종료가 발생하는 경우 PHP의 세션 데이터가 불완전하거나 올바르게 작성되지 않을 수 있습니다. 이 문제를 해결하기 위해 PHP는 SESSION_REGISTER_SHUTDOWN () 함수를 제공하여 스크립트가 실행될 때 세션 데이터가 올바르게 저장되도록합니다.
이 기사에서는 Session_Register_Shutdown () 의 역할, 사용 방법 및 세션 데이터의 무결성을 도움으로 보장하는 방법에 대해 자세히 소개합니다.
Session_Register_Shutdown () 은 PHP 7.0.0 이후에 추가 된 새로운 기능입니다. 그 기능은 세션 쓰기에 대한 마감 함수를 등록하여 스크립트가 실행되면 PHP가 자동으로 session_write_close () 를 호출하고 스토리지 (예 : 파일, 데이터베이스 등)에 세션 데이터를 작성합니다.
전통적인 작문을 사용하면 개발자가 데이터가 작성되도록 Session_Write_Close ()를 수동으로 호출해야합니다. 그러나 특히 스크립트가 비정상적으로 종료 될 때 수동 통화는 제 시간에 쉽게 놓치거나 실행되지 않습니다. 이 단계는 Session_Register_Shutdown ()을 사용하여 자동으로 완료하여 코드의 견고성을 향상시킬 수 있습니다.
사용하기가 매우 간단합니다. 일반적으로 Session_start () 이후에 호출하십시오.
<?php
session_start();
session_register_shutdown();
// 세션 변수를 설정합니다
$_SESSION['username'] = 'user123';
// 스크립트가 완료된 후,PHP 자동으로 호출됩니다 session_write_close(),세션 데이터가 저장되었는지 확인하십시오
?>
Session_Register_Shutdown ()을 호출 한 후 PHP는 SESSION_WRITE_CLOSE ()를 수동으로 호출하지 않고 스크립트 실행이 완료되면 세션을 자동으로 쓰고 닫습니다.
데이터 손실 방지 <br> 기존 코드에서 Session_Write_Close () 을 호출하는 것을 잊어 버리거나 예외로 인해 스크립트가 일찍 종료되면 세션 데이터가 올바르게 저장되지 않을 수 있습니다. SESSION_REGISTER_SHUTDOWN ()은 스크립트가 어떻게 끝나더라도 데이터를 작성할 수 있도록합니다.
코드 단순성 향상 <br> 각 작업 세션 데이터 후에는 쓰기 기능을 명시 적으로 호출하여 개발 부담을 줄일 필요가 없습니다.
코드 견고성 향상 <br> 복잡한 응용 프로그램 에서이 기능을 사용하여 부적절한 세션 작성으로 인한 버그를 줄입니다.
session_register_shutdown ()은 session_start () 후에 만 호출 할 수 있습니다. 그렇지 않으면 오류 가보고됩니다.
이 기능은 PHP 7.0.0 이상에서만 유효합니다.
이 기능은 닫는 것을 지원하지 않고 세션 변수를 계속 작성합니다. 쓰기 및 클로즈 작업은 일회성입니다.
<?php
session_start();
session_register_shutdown();
// 사용자 로그인 설정 세션을 시뮬레이션합니다
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$_SESSION['user_id'] = 101;
$_SESSION['login_time'] = time();
}
// 세션 데이터를 자동으로 작성합니다,전화가 필요하지 않습니다 session_write_close()
// 페이지 콘텐츠 출력
echo "사용자ID:" . ($_SESSION['user_id'] ?? '로그인하지 않았습니다');
?>
위의 예에서, session_register_shutdown ()은 스크립트가 정상적으로 종료되는지 여부에 관계없이 $ _session 의 데이터가 스토리지에 기록되도록합니다.
Session_Register_Shutdown ()은 PHP 세션 데이터를 완전히 작성하는 효과적인 방법입니다. 코드를 단순화하고 응용 프로그램 안정성과 보안을 향상시킵니다. 특히 사용자 상태 관리와 관련된 프로젝트에서는 세션 데이터 손실 가능성을 피하기 위해이 기능을 사용하는 것이 좋습니다.