2008-10-10

imap_open 실행시 느리게 연결되는 현상 해결

대부분의 데몬에 원격에서 연결하는 것은 상당한 부하와 시간을 소비하게 됩니다. DB 의 경우에도 보통 Connection Pool 을 만들어서 커넥션 시간을 줄이고 있습니다.

지 금 만들고 있는 웹메일에서 IMAP 서버에 접근할때에도 같은 문제가 발생하고 있습니다. 한번 연결할때마다 약 2초의 시간이 걸립니다. 그래서 페이지를 이동하거나, 메일 내용을 보려고 할때마다 2초 이상의 시간을 기다려야만 했습니다. PHP에서 개발하고 있어서 다른 페이지에서 IMAP 의 연결을 유지할 수 있는 방법이 없었습니다. SESSION 변수를 이용하면 될 듯 하였으나, 테스트 실패했습니다.혹시나 하고 계속 찾아보았지만 PHP에서 해결할 수 있는 방법은 없었습니다.

그렇지만, 방법이 아주 없으면 글을 적지도 않았겠지요. IMAP 연결을 유지하려면 IMAP Proxy 를 사용하면 됩니다. 데비안 리눅스의 경우, apt-get install imapproxy 라고 입력하면 바로 설치되어 실행까지 됩니다. 기본적으로 로컬에 IMAP 이 있다고 가정하고 있으며, 1143 포트를 열고 있습니다. 개발자는 imap_open 함수를 사용할때 localhost:1143 으로 접근하면 됩니다. PHP 뿐만 아니라 다른 환경에서도 적용할 수 있어서 괜찮은 방법인 것 같습니다.

이렇게 구현을 하고 보니, 페이지 이동시 2~3 초 걸리던 것이, 거의 즉시 화면이 전환되었습니다.
상용 웹메일에서는 이것을 어떻게 해결하고 있는지 궁금하군요.

댓글 없음:

댓글 쓰기