php, Cgi에서 세션과 java(jsp)에서의 세션 차이점?

sunbee의 이미지

php, cgi에서 세션은 파일로 관리가 됩니다..

그런데 java 세션은 메모리 상에 관리가 되져?? class라서..

세션이 메모리상에 저장이 된다.. 이 부분이 이해가 잘 안되거등요..

자바 가상머신에서 관리해주는건지???

예전 http1.0일때는 한페이지를 접속해도 socket을 맺고 끊는것을 반복하여 페이지를 받는데..

어떻게 메모리상에 세션값을 저장할 수 있는지 모르겠네염... ㅡㅡ;;

그리고 cgi에서는 세션값을 메모리상에 저장하고 쓰려면 어떤 메카니즘이 필요합니까??

아.. 두서없넹.. 제가 정리가 안되서리.. 지성~

ironiris의 이미지

안녕하세요~
그럴 경우는 램드라이브를 하나 만들어서 마운트시킨후 그곳에 세션을 저장하면 메모리에 세션이 저장되는 것과 같은 효과를 볼수 있겠죠. :)
행복하세요~

asteroid의 이미지

세션을 어떤식으로 구현하든, 기본적인 동작 형태는 바뀌지않기때문에

상관없다고 생각합니다.

일반적으로, Session ID를 쿠키나 패러미터로 송/수신해서

세션을 적용하는 것이므로, JSP컨테이너에서 이 값을 관리하여

같은 sid에 대해 마지막에 사용했던 세션값을 복구시켜 줄 수 있겠죠.

실제로, jakarta-tomcat-4은 모든 세션을 java.util.HashMap에

저장합니다.

잘은 모르겠지만, PHP등에서 세션을 파일로 구현한 것은

apache가 multi-processing으로 동작할때의 복잡성을 줄이기

위해서 인것 같은데요.

kyong의 이미지

php에서 mm module을 쓰면 shared memory를 쓰게 됩니다.
mm을 쓰면 performance에 이득이 있는 반면
file로 하면 관리가 쉽다고 생각됩니다.
메모리를 쓸 때 가장 큰 문제는 apache를 재 시작할 때
세션이 사라지는 문제가 아닌가 생각되네요.

sunbee의 이미지

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에서 설정한 세션값을 가지고 올 수 있냐는 겁니다.. 이미 메모리가 반환되었을 텐데요.. ^^;;

어떻게 되는건지 모르겠네염..

정말 궁금합니다..

vigor96의 이미지

sunbee wrote:

여기서 제가 궁금한것은 A page를 실행하는 process 는 B page로 이동할때 이미 끝났는데(종료) B page process에서 A에서 설정한 세션값을 가지고 올 수 있냐는 겁니다.. 이미 메모리가 반환되었을 텐데요.. ^^;;

모든 프로세스가 종료되는 것이 아닙니다.

단지 그것에 해당하는 jsp 코드 루틴이 종료될 뿐입니다.

상위 프로세스에서 세션 같은 정보를 ..저장하고 있다가.

그 jsp 루틴이 시작될 때... 그 정보를 넘겨 줄 수 있는 거죠.

그 상위 프로세스는 죽지 않고 계속 유지 되는 거죠.

kyong의 이미지

sunbee wrote:
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에서 설정한 세션값을 가지고 올 수 있냐는 겁니다.. 이미 메모리가 반환되었을 텐데요.. ^^;;

어떻게 되는건지 모르겠네염..

정말 궁금합니다..

메모리를 반환 안 하면 되겠지요.
php.ini 에 보시면 설정값이 있습니다.
거기에 설정된 시간동안 갖고 있는 것입니다.
자세한 것은 Sascha Schumann이 쓴 session module을 보시면 되겠네요.

좀 더 설명하자면,
아파치 child process가 죽을 때 메모리(shared memory pool)를 반환 안
합니다. 세션 데이터가 hash 형태로 저장되는데 데이터 안에 시간을 기록하고
있기 때문에 php.ini에 설정된 시간에 따른 garbage collection이 가능합니다.

sunbee의 이미지

답변 감사 드립니다.. ^^

몇가지 의문사항이 있어서 또다시 질문을 올리게 되었습니다..

Quote:

아파치 child process가 죽을 때 메모리(shared memory pool)를 반환 안
합니다.
세션 데이터가 hash 형태로 저장되는데 데이터 안에 시간을 기록하고
있기 때문에 php.ini에 설정된 시간에 따른 garbage collection이 가능합니다.

이 말씀은 http 데몬중에 shared memory 를 관리하는 데몬이 존재한다는 말입니까?

Quote:

모든 프로세스가 종료되는 것이 아닙니다.

단지 그것에 해당하는 jsp 코드 루틴이 종료될 뿐입니다.

상위 프로세스에서 세션 같은 정보를 ..저장하고 있다가.

그 jsp 루틴이 시작될 때... 그 정보를 넘겨 줄 수 있는 거죠.

그 상위 프로세스는 죽지 않고 계속 유지 되는 거죠.

여기서 상위프로세스는 어떤 프로세스를 말하는 겁니까? http 데몬을 말하는 겁니까?

kyong의 이미지

sunbee wrote:
답변 감사 드립니다.. ^^

몇가지 의문사항이 있어서 또다시 질문을 올리게 되었습니다..

Quote:

아파치 child process가 죽을 때 메모리(shared memory pool)를 반환 안
합니다.
세션 데이터가 hash 형태로 저장되는데 데이터 안에 시간을 기록하고
있기 때문에 php.ini에 설정된 시간에 따른 garbage collection이 가능합니다.

이 말씀은 http 데몬중에 shared memory 를 관리하는 데몬이 존재한다는 말입니까?

Quote:

모든 프로세스가 종료되는 것이 아닙니다.

단지 그것에 해당하는 jsp 코드 루틴이 종료될 뿐입니다.

상위 프로세스에서 세션 같은 정보를 ..저장하고 있다가.

그 jsp 루틴이 시작될 때... 그 정보를 넘겨 줄 수 있는 거죠.

그 상위 프로세스는 죽지 않고 계속 유지 되는 거죠.

여기서 상위프로세스는 어떤 프로세스를 말하는 겁니까? http 데몬을 말하는 겁니까?

php는 apache 모듈이란 것을 잊지 마시기 바랍니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.