현재 zbXE의 접속 세션은 파일 시스템을 이용합니다.


PHP에서 기본적으로 제공하는 session function을 이용하여 php설정에 따라 세션이 저장되는 위치만 변경하고 있습니다.

그런데 아시다시피 이럴 경우 접속자가 조금만 증가되어도 수 많은 garbage 파일들이 생성되고 또 한 디렉토리내에 수만에서 수십만 이사으이 파일들이 생성되어 시스템 측면에서도 좋지 않은 결과를 불러오고 있습니다.

또 현재는 지원되고 있지 않지만 한대 이상의 웹서버를 구축할때 세션 정보를 공유할 수 없다는 단점도 있습니다.

하지만 php에서 자체 제공하는 기능이라 안정적이고 손쉽게 사용가능하다는 장점이 있습니다.


이에 반해 세션정보를 db를 이용하는 방법도 있습니다.

zbXE의 경우 기본적으로 모든 요청시 db에 접속을 하고 또 인증된 사용자의 경우 무조건 해당 회원의 DB에 저장된 정보를 읽어오도록 하기 때문에 db query가 한번 더 늘어나는 것에 대해서 큰 부담은 없다고 판단합니다.

더군다나 session handler를 자체적으로 생성하여 사용할 경우 세션 정보의 수정 및 관리가 수월해지고 불필요한 garbage파일들이 생성되지 않게 할 수 있습니다.


현재 제로보드 공식사이트의 경우 20만여개의 세션 관련 파일들이 한 디렉토리내에 존재하고 있습니다.

그리고 zbXE의 경우 쪽지 유무등에 대해서도 모두 flag file을 이용하여 처리하고 있는데 이들을 모두 세션 테이블에 저장할 수가 있게 됩니다.


zb5beta때 db로 세션 핸들링을 하였는데 그때에도 db 부하가 늘어난다든지 하는 경우는 없었던 것 같습니다.

zbXE 오픈 이후 세션 관련 문제들을 계속 보고 있는데 아무래도 웹서버의 자원을 많이 활용하는 zbXE의 구조상 session정보등을 DB를 이용하는 것이 더 좋을 것 같다고 생각하고 있습니다.


이와 관련되어서 좋은 의견 주시면 감사하겠습니다.