[완료] PHP 세션 끊김 현상

kkume의 이미지

안녕하세요.

PHP 세션에 대해 질문드립니다.

환경은 리눅스에 PHP v4.4.4 입니다.

먼저, 기존에는 웹서버 1대, DB서버 1대로 서비스 하다가 시스템을 확장하여
-. 웹서버 2대, DB서버 1대, 데이터서버 1대 이렇게 운영하게 되었습니다.
웹서버는 2대는 DNS Round Robin을 걸고, 데이터서버의 디스크를 NFS 마운트 해서 사용합니다.

이렇게 서비스 중이었는데, 사용자들이 가끔 사이트를 이동하다가 로그아웃 되는 현상이 나타난다고 합니다. 현재 생각되어 지는 것은 세션 문제인것 같습니다.

기존에는 각 웹서버의 로컬 디스크의 /tmp로 세션 디렉토리로 사용하고 있었고, DNS Round Robin으로 한 후에도 시스템 환경은 위처럼 바뀌었는데 세션은 예전방식으로 하고 있습니다.

그래서, 각 웹서버의 php.ini 파일의 session.save_path=/home/session 으로 하고 디렉토리 퍼미션도 777로 주고, 아파치를 재시작 하고 접속해 보니 사이트가 올라오지 않았습니다. 부랴부랴 원래 대로 해놓고 구글링 해보니 어떤분께서 세션을 분산서버에 NFS로 한다는게 문제가 있을듯 하다고 합니다.

현재 php.ini의 세션관련 값들은 다음과 같습니다.
session.auto_start = Off
session.cookie_domain = no value
session.save_handler = files
session.save_path = /tmp
session.use_cookies = On
session.use_trans_sid = Off

1. 위와 같은 환경에서 세션을 계속 유지하고 공유 할 수 있는 방법이 무엇인지요?
2. 각 html 페이지에 session_start()를 사용한 파일을 일일이 수정해야 하는지요?
3. 로그인후 session_register('변수', '변수', ...) 이렇게 했는데, 여기 앞 뒤로 뭔가 해주면 안되는지요?
4. 위 방법들이 안될경우 세션을 DB로 관리해야 하는지요?

감사합니다.

송효진의 이미지

세션 저장 자체를 직접 작성해서 저장소를 통일하세요.

http://kr.php.net/manual/en/function.session-set-save-handler.php

보통은 db 에 넣습니다.

http://kr.php.net/manual/en/function.session-start.php

session_register() 는 백만년전의 사용방법입니다.

훨씬 간단하게 $_SESSION 변수를 이용하기만 하면 됩니다.

emerge money
http://wiki.kldp.org/wiki.php/GentooInstallSimple - 명령어도 몇 개 안돼요~
http://xenosi.de/

monovision의 이미지

송효진님처럼 세션 저장소를 하나로 통일하세요(DB)

또는 라운드로빈이 아닌 로드밸런싱을 이용하는 것도 하나의 방법입니다. (물론 추가 비용이 들겠죠 ㄷㄷ)
로드밸런싱 알고리즘은 Source Hashing 을 사용하시면 됩니다.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.