PHP를 사용하여 웹 응용 프로그램을 구축 할 때 세션 데이터를 관리하고 저장하는 것이 중요한 부분입니다. 일반적으로 사용자가 브라우저 나 페이지를 닫더라도 데이터 일관성과 보안을 보장하기 위해 세션 데이터를 올바르게 저장할 수 있기를 바랍니다. session_register_shutdown () 함수는이 목적을 위해 존재하는 도구입니다.
SESSION_REGISTER_SHUTDOWN ()은 스크립트가 실행될 때 SESSION_WRITE_CLOSE ()를 자동으로 호출하기 위해 PHP가 제공하는 내장 기능입니다. 이를 통해 스크립트가 정상적으로 종료되는지 또는 예기치 않게 중단되는지에 관계없이 현재 세션 데이터가 서버에 안전하게 기록 될 수 있습니다.
기본적으로 PHP는 스크립트가 실행 된 후 세션 데이터를 자동으로 저장합니다. 그러나 일부 경우 register_shutdown_function () 이 활성화되고 세션 작업이 호출 될 때와 같은 경우 또는 스크립트가 exit () 및 die () 와 같은 함수를 호출 할 때 세션 데이터를 올바르게 저장하지 못할 수 있습니다. 현재 Session_Register_Shutdown ()을 사용하는 것이 특히 중요합니다.
사용하기가 매우 간단합니다. Session_Start ()를 호출 한 후 한 번 SESSION_REGISTER_SHUTDOWN ()을 호출하면됩니다.
<?php
session_start();
session_register_shutdown();
// 예:사용자 방문을 늘리십시오
if (!isset($_SESSION['views'])) {
$_SESSION['views'] = 1;
} else {
$_SESSION['views']++;
}
echo "당신은 첫 번째입니다 {$_SESSION['views']} 이번 페이지를 방문하십시오。";
?>
위의 코드는 페이지가 닫힌 방법에 관계없이 세션 데이터를 저장할 수 있도록합니다 (정상 폐쇄, 비정상 종료 등).
일부 고급 시나리오에서는 사용자 동작 로그 로그 또는 청소 자원과 같은 사용자 정의 종료 기능을 등록 할 수 있습니다. 현재 Session_Register_Shutdown ()을 호출하면 register_shutdown_function () 과 협력하여 세션 손실을 방지 할 수 있습니다.
<?php
session_start();
session_register_shutdown();
register_shutdown_function(function () {
// 로깅 로그 로그는 원격 서버에 로그를 기록합니다
file_get_contents("https://m66.net/log?uid=" . urlencode($_SESSION['user_id']));
});
// 정상 session 논리
$_SESSION['last_action'] = time();
?>
위에서 볼 수 있듯이 사용자의 조치 레코드는 https://m66.net/log 로 전송되므로 페이지를 닫기 전에 사용자의 마지막 동작을 캡처하는 데 도움이됩니다.
session_register_shutdown ()은 세션이 활성화 된 경우에만 유효하므로 Session_Start () 후에 전화하십시오.
종료 기능에서 세션 데이터를 수정하는 것이 좋습니다. 종료 단계는 주로 외부 자원을 읽거나 쓰는 데 적합합니다.
이 기능은 PHP 7+ 버전에서 유효하며 이전 버전에서는 사용할 수 없었을 수 있습니다.
Session_Register_Shutdown () 은 간단하지만 매우 실용적인 기능으로, 특히 데이터 일관성에 대한 요구 사항이 높은 응용 프로그램 시나리오에 적합합니다. 우연한 페이지 폐쇄로 인한 세션 데이터 손실 문제를 올바르게 사용하면 효과적으로 피할 수 있으므로 사용자 경험 및 시스템 견고성이 향상됩니다.
관련 태그:
session