티스토리 뷰

php 세션 조절하기


# 설치환경
- CentOS 5.x (64bit)


1. php 세션 조절하기

- php.ini 파일을 보면 다음과 같은 session 관련 필드가 있는 것을 볼 수 있다. 이 값들을 이용하여 세션을 조절 할 수 있다

[Session]
; Handler used to store/retrieve data.
session.save_handler = files

; Argument passed to save_handler.  In the case of files, this is the path
; where data files are stored. Note: Windows users have to change this
; variable in order to use PHP's session functions.
;
; As of PHP 4.0.1, you can define the path as:
;
;     session.save_path = "N;/path"
;
; where N is an integer.  Instead of storing all the session files in
; /path, what this will do is use subdirectories N-levels deep, and
; store the session data in those directories.  This is useful if you
; or your OS have problems with lots of files in one directory, and is
; a more efficient layout for servers that handle lots of sessions.

.

.

.                (중략) 

.

.

; Whether to use cookies.
session.use_cookies = 1

;session.cookie_secure =

; This option enables administrators to make their users invulnerable to
; attacks which involve passing session ids in URLs; defaults to 0.
; session.use_only_cookies = 1

; Name of the session (used as cookie name).
session.name = PHPSESSID

; Initialize session on request startup.
session.auto_start = 0

; Lifetime in seconds of cookie or, if 0, until browser is restarted.
session.cookie_lifetime = 0

; The path for which the cookie is valid.
session.cookie_path = /

; The domain for which the cookie is valid.
session.cookie_domain =

.

.




- session.save_handler :
기본적으로 Files 방식을 이용한다. session_module_name() 을 통하여 현재 설정된 정보를 볼 수 있다.

공유 메모리를 사용하는 MM방식과 USER방식을 지원하다. USER방식을 사용하는 경우에는 session_set_save_handler

(string open, string close,string read, string write, string destroy, string gc)을 이용하여session_set_save_handler

("함수명", "함수명", "함수명", "함수명", "함수명", "함수명")과 같이콜백 함수를 정의하고 콜백 함수를 호출하여 세션 데이터나

세션ID등을 데이터베이스 등에 보관하여 사용할 수도 있다.



- session.save_path :

세션 파일을 저장할 경로을 의미하고 files 방식에서는 /tmp가 기본적인 파일이 저장되는 디렉토리의 절대 경로이다.



- session.use_cookies :

세션과 함께 쿠키를 사용할 것인가에 대한 설정으로 기본적으로 쿠키와 함께 사용하도록 되어 있다.

쿠키를 사용하지 않는 경우에는 0으로 설정하고 버전에 따라서는 On과 Off로 설정하기도 한다.



- session.name :

세션ID를 쿠키에 저장한 경우 PHP에서 세션ID를 확인하기 위한 변수명을 의미한다.

기본값으로 PHPSESSID로 설정되어 있으며$PHPSESSID라고 하면 세션ID를 확인할 수 있다.



- session.auto_start :

PHP시작과 동시에 세션이 자동으로 스타트 되도록 하는 옵션이다.

기본값은 0으로 자동으로 시작되지 않도록 되어 있다.

그러므로 세션을 사용하기 전에는 session_start()를 호출해야 하고, 자동으로 시작하게 하려면 1로 설정하면 된다.

버전에 따라서는 On과 Off로 설정하기도 한다.



- session.cookie_lifetime :

세션ID를 저장한 쿠키의 활성화 시간 또는 유효 시간을 설정하는 것이다.

기본값으로는 0이 설정되어 있어 브라우저가 종료되면 자동으로 쿠키값은 삭제된다.session_set_cookie_params()

함수를 이용하여 쿠키의 유효 시간을 변경할 수 있으며 PHP.INI를 수정하여 쿠키 적용 시간을 변경 가능하다.


- session.cookie_path :

세션ID가 저장된 쿠키가 적용될 유효 경로(디렉토리)를 설정하는 부분이다.

기본값은 "/"로 모든 경로에서 적용 가능하도록 설정되어 있다.

session.cookie_lifetime과 같이 session_set_cookie_params()함수를 이용하여 쿠키의 적용 디렉토리를 변경할 수 있다.



- session.gc_maxlifetime :

사용되지 않는 것으로 보이는 세션 데이터를 삭제한다. 세션ID를 삭제하는 것이 아니라 기본 설정 시간인 1440초 동안 아무런

요청이 없을때 자동으로 세션 데이터를 삭제하도록 되어 있다. 이렇게 자동으로 삭제하는 이유는 서버의 부하를 줄이기도 하지만

클라이언트에서 접속을 종료하였는지 여부를 확인할수 없으므로1440초 동안 사용하지 않는 데이터는 삭제하게 한다.


- session.cache_expire :

서버에 저장된 세션ID의 활성화 시간이다.

클라이언트에서 브라우저를 닫아버리면 서버에서는 클라이언트가 연결중인지 아닌지 확인하는 방법이 없으므로 미리

세션데이터를 삭제하고 세션ID는 180분 이후에 삭제시킨다.만약 세션 ID를 삭제하지 않으려면 PHP.INI를 수정하여

시간을 늘려주면 된다.





세션을 핸들링하려면 세션 저장 디렉토리를 별도로 사용해야 한다.

session_save_path("저장디렉토리");
ini_set("session.cache_expire", 180); // 세션 유효시간 : 분
ini_set("session.gc_maxlifetime", 86400); // 세션 가비지 컬렉션(로그인시 세션지속 시간) : 초




* 참고자료 : http://korcow.egloos.com/1705728


'웹개발 > Php' 카테고리의 다른 글

배열 카운트 만큼 특수 문자 채우기  (0) 2014.02.25
셰션 정리하기  (0) 2014.02.19
PHP 이용한 GETTEXT 의 다국어 처리  (1) 2014.02.07
Apache log4php 사용하기  (0) 2013.01.16
간단한 페이지 캐쉬  (0) 2012.11.27
댓글
D-DAY
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함