2016-07-17 2 views
0

제 생각에는 요청을 받으면 Apache 서버가 새 프로세스를 포크하고 적절한 PHP 스크립트/파일을 호출한다는 것입니다.PHP 세션이 만료되면 Apache 프로세스는 어떻게됩니까?

아파치가 분기하는이 새로운 프로세스에서 세션이 PHP 스크립트에 의해 시작되었을 때 어떤 일이 발생합니까? 브라우저가 종료되어 세션이 종료 되었습니까? 내가 사용하는 오류 또는 로그 아웃 리디렉션 후에 exit(); 호출이 있지만 서버/OS 수준에서 수행하는 작업이 확실하지 않습니다.

아파치가 프로세스를 종료합니까? 아파치와 PHP 사이의 통신은 어떻게 작동합니까?

+0

session_destroy() 의미합니까? –

+0

번호. 나는 아파치와 PHP 사이의 의사 소통을 언급하고있다. 새로운 프로세스/스레드가 생성되지만 세션이 끝나면이 새로운 프로세스를 처리하는 PHP/Apache 처리 방법은 무엇입니까? – marc

답변

2

제 생각에는 요청을 받으면 Apache 서버가 새 프로세스를 포크하고 적절한 PHP 스크립트/파일을 호출한다는 것입니다.

이것은 PHP-CGI 구성의 경우에만 해당되며 일반적이지 않습니다. 대부분의 배포에서는 Apache 프로세스 내에서 PHP 스크립트를 실행하는 mod_php SAPI를 사용합니다.

세션이 아파치 갈래이 새로운 과정에서 PHP 스크립트에 의해 시작하면 어떻게됩니까

가 만료되었거나 사용자가 브라우저를 종료하여 종료?

없음.

PHP-CGI 구성에서 스크립트는 응답 생성이 완료되면 즉시 종료됩니다. mod_php 설정에서, 스크립트 프로세스가 끝나면 아파치 프로세스는 새로운 요청을 기다리는 것으로 되돌아 간다.

세션의 수명은 특정 프로세스와 관련이 없습니다. 세션은 시스템의 임시 디렉토리에 파일로 저장됩니다. PHP는이 디렉토리에서 주기적으로 만료 된 세션을 확인하고 적절하게 제거합니다.

브라우저를 닫을 때 이 아닌 경우 서버의 임시 디렉토리에서 세션을 제거하십시오. 브라우저가 세션과 관련된 쿠키를 삭제하여 세션의 사용을 중지 시키지만 서버에이를 알리지 않을 수 있습니다.

+0

apache가 요청을 받으면 새로운 스레드를 생성합니까? 또는 새로운 프로세스? 이 프로세스는 실행해야하는 새 스크립트를 어떻게 알 수 있습니까? 감사 ! – marc

+0

도 마찬가지입니다. 요청은 요청을 수신 한 기존 스레드 또는 프로세스에서 처리됩니다. – duskwuff

관련 문제