session_register_shutdown ()은 세션이 닫기 후크를 쓸 수있는 함수입니다. PHP 스크립트가 실행되기 전에 자동으로 Session_Write_Close () 를 호출합니다. 이는 스크립트 실행의 마지막 단계에서 Session_Start () 가 호출되는지 여부에 관계없이 함수에 의해 등록 된 쓰기 동작이 실행됨을 의미합니다.
이를 통해 사용자 편집 컨텐츠, 양식 상태, 임시 설정 등과 같은 중요한 데이터를 캡처하고 저장할 수있는 기회가 제공됩니다. 사용자 세션이 종료 될 예정입니다.
온라인 문서 편집기를 개발한다고 가정 해 봅시다. 사용자는 편집 중에 갑자기 브라우저 또는 네트워크 중단을 닫을 수 있습니다. 데이터 손실을 피하려면 떠나기 전에 사용자의 초안 콘텐츠를 자동으로 저장하려고합니다.
각 요청에 자동 저장 로직을 등록하고 세션 메커니즘을 사용하여 데이터를 유지하여 "임시 저장"기능을 구현할 수 있습니다.
Session_Register_Shutdown ()을 사용하여 자동 저장 기능을 구현하는 방법을 보여주기 위해 간단한 편집기 페이지를 예로 들어 보겠습니다.
PHP 파일의 시작 부분에서 서버가 세션 지원이 활성화되고 Session_Start ()를 호출하십시오.
<?php
session_start();
다음으로 Session_Register_Shutdown ()을 사용하여 사용자가 현재 편집 한 컨텐츠를 저장하기 위해 함수를 등록합니다.
function autoSaveDraft() {
if (isset($_POST['content'])) {
$_SESSION['autosave'] = $_POST['content'];
file_put_contents('/tmp/autosave_' . session_id() . '.txt', $_POST['content']);
}
}
session_register_shutdown('autoSaveDraft');
여기서는 콘텐츠를 $ _session 에 저장할뿐만 아니라 후속 복구를 위해 임시 파일 /tmp/autosave_<session_id>.txt 에도 작성합니다.
그런 다음 페이지에서 사용자가 입력 할 수 있도록 간단한 양식을 작성하십시오.
<form method="POST" action="http://m66.net/editor.php">
<textarea name="content" rows="10" cols="50"><?php echo htmlspecialchars($_SESSION['autosave'] ?? ''); ?></textarea>
<br>
<input type="submit" value="유지하다">
</form>
양식이 제출 될 때마다 컨텐츠는 자동 저장 메커니즘을 통해 세션 및 파일에 기록되므로 사용자가 우연히 떠나더라도 페이지로 돌아올 때 편집 상태를 복원 할 수 있습니다.
페이지를 다시 열 때 사용자의 마지막 초안을 자동으로 복원하려면 페이지를로드 할 때 다음 논리를 추가 할 수 있습니다.
if (file_exists('/tmp/autosave_' . session_id() . '.txt')) {
$_SESSION['autosave'] = file_get_contents('/tmp/autosave_' . session_id() . '.txt');
}
이런 식으로 사용자는 수동으로 저장하지 않고도 편집 작업을 원활하게 계속할 수 있습니다.