php, Cgi에서 세션과 java(jsp)에서의 세션 차이점?
글쓴이: sunbee / 작성시간: 화, 2003/05/27 - 11:40오전
php, cgi에서 세션은 파일로 관리가 됩니다..
그런데 java 세션은 메모리 상에 관리가 되져?? class라서..
세션이 메모리상에 저장이 된다.. 이 부분이 이해가 잘 안되거등요..
자바 가상머신에서 관리해주는건지???
예전 http1.0일때는 한페이지를 접속해도 socket을 맺고 끊는것을 반복하여 페이지를 받는데..
어떻게 메모리상에 세션값을 저장할 수 있는지 모르겠네염... ㅡㅡ;;
그리고 cgi에서는 세션값을 메모리상에 저장하고 쓰려면 어떤 메카니즘이 필요합니까??
아.. 두서없넹.. 제가 정리가 안되서리.. 지성~
Forums:
램드라이브를 만들어 사용하세요~
안녕하세요~
그럴 경우는 램드라이브를 하나 만들어서 마운트시킨후 그곳에 세션을 저장하면 메모리에 세션이 저장되는 것과 같은 효과를 볼수 있겠죠. :)
행복하세요~
세션을 어떤식으로 구현하든, 기본적인 동작 형태는 바뀌지않기때문에
세션을 어떤식으로 구현하든, 기본적인 동작 형태는 바뀌지않기때문에
상관없다고 생각합니다.
일반적으로, Session ID를 쿠키나 패러미터로 송/수신해서
세션을 적용하는 것이므로, JSP컨테이너에서 이 값을 관리하여
같은 sid에 대해 마지막에 사용했던 세션값을 복구시켜 줄 수 있겠죠.
실제로, jakarta-tomcat-4은 모든 세션을 java.util.HashMap에
저장합니다.
잘은 모르겠지만, PHP등에서 세션을 파일로 구현한 것은
apache가 multi-processing으로 동작할때의 복잡성을 줄이기
위해서 인것 같은데요.
php에서 mm module을 쓰면 shared memory를 쓰게 됩니
php에서 mm module을 쓰면 shared memory를 쓰게 됩니다.
mm을 쓰면 performance에 이득이 있는 반면
file로 하면 관리가 쉽다고 생각됩니다.
메모리를 쓸 때 가장 큰 문제는 apache를 재 시작할 때
세션이 사라지는 문제가 아닌가 생각되네요.
다시 질문여..
HTTP 1.0은 연결이 없고, 상태를 유지하지 않는 프로토콜이지 않습니까?
즉 연속적인 처리에 필요한 메모리를 가질 수 없다는 말이자나요?
그런데 세션을 어떻게 메모리에 저장할 수 있습니까?
좀더 상세하게 설명드리자면..
S site에 A page, B page가 있다고 하면 A page와 B page는 서로 독립적인 process 자나여..
그런데 A page에서 세션값을 저장하고, B page로 이동하면 B page에서 쿠키에 저장된 세션 id를 가지고 서버에 요청을 하면, 서버에서 그 세션 id에 대한 세션값들을 얻오는 것으로 알고 있습니다.
여기서 제가 궁금한것은 A page를 실행하는 process 는 B page로 이동할때 이미 끝났는데(종료) B page process에서 A에서 설정한 세션값을 가지고 올 수 있냐는 겁니다.. 이미 메모리가 반환되었을 텐데요.. ^^;;
어떻게 되는건지 모르겠네염..
정말 궁금합니다..
Re: 다시 질문여..
모든 프로세스가 종료되는 것이 아닙니다.
단지 그것에 해당하는 jsp 코드 루틴이 종료될 뿐입니다.
상위 프로세스에서 세션 같은 정보를 ..저장하고 있다가.
그 jsp 루틴이 시작될 때... 그 정보를 넘겨 줄 수 있는 거죠.
그 상위 프로세스는 죽지 않고 계속 유지 되는 거죠.
Re: 다시 질문여..
메모리를 반환 안 하면 되겠지요.
php.ini 에 보시면 설정값이 있습니다.
거기에 설정된 시간동안 갖고 있는 것입니다.
자세한 것은 Sascha Schumann이 쓴 session module을 보시면 되겠네요.
좀 더 설명하자면,
아파치 child process가 죽을 때 메모리(shared memory pool)를 반환 안
합니다. 세션 데이터가 hash 형태로 저장되는데 데이터 안에 시간을 기록하고
있기 때문에 php.ini에 설정된 시간에 따른 garbage collection이 가능합니다.
이해가..
답변 감사 드립니다.. ^^
몇가지 의문사항이 있어서 또다시 질문을 올리게 되었습니다..
이 말씀은 http 데몬중에 shared memory 를 관리하는 데몬이 존재한다는 말입니까?
여기서 상위프로세스는 어떤 프로세스를 말하는 겁니까? http 데몬을 말하는 겁니까?
Re: 이해가..
php는 apache 모듈이란 것을 잊지 마시기 바랍니다.
댓글 달기