필자는 스크립트 실행 중 PHP 세션이 시간 초과되는 경우 스크립트 실행이 끝날 때까지 $ _SESSION 배열의 내용을 계속 사용할 수 있을지 궁금해했습니다. 예를 들면 :
session_start();
if(! isset($_SESSION['name'])) {
echo 'Name is not set';
exit;
}
// imagine there is a bunch of code here and that the session times out while
// this code is being executed
echo 'Name is ', $_SESSION['name']; // will this line throw an error?
는 세션 시간 동안 밖으로 계속 확인하지 않고 내가 스크립트에서 나중에 읽을 수 있도록 로컬 범위에 세션 변수를 복사하는 것이 실용적인가? 예 :
session_start();
if(isset($_SESSION['name'])) {
$name = $_SESSION['name'];
} else {
echo 'Name is not set';
exit;
}
// bunch of code here
echo 'Name is ', $name;
심지어 기본 flatfile 구현은 gc가 실행되기 전에 파일이 열리고 잠겨 있기 때문에 요청한 세션이 시간 초과되는 것을 방지합니다. 따라서 gc가 session_start()를 호출하여 트리거 된 경우에도 매우 오래된 세션 파일을로드 할 수 있습니다. – VolkerK