PHP 세션 시간 설정하기




    이번 포스팅에서는 PHP 세션설정에 대해서 알아보겠습니다


    웹사이트의 세션 유지시간(로그인 유지시간)을 php.ini 파일을 통해 변경할 수 있습니다





     PHP 세션의 이해와 구상



    1. 세션의 생성원리

    [root@server session]# ls -alh
    합계 0
    -rw------- 1 nobody nobody 0  3월 21 15:42 sess_mnsoqbsfm69ih2u129dilbreq4
    [root@server session]# 
    


    세션을 만들게 되면 서버에 세션이 생성되며 위의 내용과 같이 파일 이름은 접속자의 유일한 sess_[ID]명으로 만들어지게 됩니다


    그리고 웹사이트에 사용자가 로그인을 할때 세션은 지정한 디렉토리에 세션파일 저장됩니다




    2. 세션의 문제점


    초기에는 세션파일이 수가 얼마되지 않았을때는 문제가 없지만 시간이 지나면서 계속 쌓이게 되면 서버에 부담을 주게되어 속도가 많이 느려질수도 있습니다


    제가 겪은 일중에 세션의 수가 많은 양으로 쌓이게 되면서 웹사이트가 느려지는 현상이 발생하게 되었으며, 세션파일을 삭제한 경우 다시 정상으로 돌아오더군요


    이러한 경우를 겪은 후 세션을 효율적으로 관리하여야 된다는 생각이 들었습니다




    3. 보안적인 부분


    보안적으로 사용자가 일정시간 동안 아무런 요청을 하지 않았을 경우 세션을 지워 자동으로 로그아웃이 되도록 별도로 설정해야되는 경우가 필요합니다

    (세션삭제는 다른 포스팅에서 다루겠습니다)




    4. 세션시간에 대한 구상


    세션 유지시간은 운영하시는 웹사이트에 따라 효율적으로 설정하셔야 됩니다

    예로 은행, 관공서 사이트 같은 보안수준이 높은 곳에서는 세션시간을 10분 미만으로 설정하여 보안을 강화해야 됩니다. 


    하지만 블로그 같이 글을 작성해야 되는 사이트는 10분 미만으로 하였을때 세션이 삭제되면서 로그아웃이 되는 경우가 되면 데이터가 날라가는 경우가 발생하기 되니, 보안수준에 따라 세션시간을 너무 짧지 않게 적절하게 설정해야 됩니다.




     




     PHP 세션의 유지시간 설정하기




    php.ini 파일을 열고 아래의 설정정보를 수정 합니다 (대부분 /etc/php.ini 에 있습니다)



    1. 세션 유지시간 설정 ( 세션 유지시간을 설정합니다 - [단위 : 초] )

    session.gc_maxlifetime = 1440
    


    시간단위는 초 단위 이고   24분 = 1440,  30분 = 1,800,   1시간 = 3,600 형식으로 원하시는 시간에 맞게 적용하시면 됩니다





    2. 세션 삭제 비율

    session.gc_divisor = 10
    session.gc_probability = 1
    


    일정비율로 세션파일을 삭제하는 설정입니다

    위의 설정을 예로 들면 새로운 세션이 시작될때마다 10번의 세션의 1비율로 제거되며, 두 설정 값을 1로 설정할 경우 정 확하게 유효기간이 넘는 세션은 삭제되게 됩니다





    3. PHP 유지시간 추천설정


    session.gc_divisor = 1
    session.gc_probability = 1
    session.gc_maxlifetime = 1440
    


    session.gc_divisor, session.gc_probability의 설정은 1로 설정하여 session.gc_maxlifetime 으로 시간만 설정하는 것을 권장드립니다.



    모든 설정을 완료하신후 아파치를 재시작해야됩니다.


    Posted by Server-talk 서버이야기