logo

PHP 세션 유지시간 변경

Server Side April 10, 2019

php 환경 위에서 작업하다보면 로그인을 통한 회원 세션을 통해 사이트 이용권한을 분류하는 경우가 있습니다.

 

일반적인 랜딩 페이지에서는 그닥 신경쓸 필요가 없는 부분이지만 회원제도를 사용하는 홈페이지에서는 꼭 체크하고 가야할 부분입니다.

 

 

사용자의 사이트 이용 설정을 남기는 방법은 쿠키와 세션 두가지 방법이 있는데 쿠키는 클라이언트(사용자) 컴퓨터에 직접 데이터를 남기고 세션은 서버(사이트)에 데이터를 남기는 방법입니다.

 

당연히 클라이언트에 정보를 저장하지 않는 세션방식이 주로 사용됩니다. 근데 이게 접속자에 대해서 모든 세션을 서버가 관리해야하므로 대규모 시스템에서는 일부 정보를 세션화 시키는것이 아니라 쿠키로 관리시키기도 합니다. 이 부분은 말하면 길어지는 또 다른 영역이므로 끊고 갑시다. :)

 

원래 이야기로 돌아와서 이 세션은 서버에 저장시키는 정보이므로 언제까지나 데이터를 보관할 수도 없는 노릇이고 또 로그인 같은 세션이 계속 남아있으면 공용컴퓨팅 환경에서는 사용자의 실수로 자신의 로그인 세션이 다른사람에게 제공되는 경우도 존재하죠.

 

그래서 php에서 디폴트로 세션은 180분의 생명주기를 가지며 사용되지 않는 세션값에 대해서 24분(1440초)의 가비지 컬렉션 대기시간을 가집니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#vi /etc/php/7.2/fpm/php.ini
...
 
; After this number of seconds, stored data will be seen as 'garbage' and
; cleaned up by the garbage collection process.
; http://php.net/session.gc-maxlifetime
session.gc_maxlifetime = 1440
 
; Document expires after n minutes.
; http://php.net/session.cache-expire
session.cache_expire = 180
 
...
 
cs

 

윗 부분의 코드(Line 1432, 75%)에서 원하는 수치로 바꾸면 됩니다. 이후 php를 재시작하고 php_info()에서 session 파트의 수치값을 통해 변경점을 확인합니다.