PHP & Others

[설치/설정] 대용량 업로드...

컨텐츠 정보

본문

글쓴이 : 쪼아~    날짜 : 05-12-01 16:03    조회 : 970     
 
 
오래된 얘기지만 특별히 완벽하다 싶은 글이 없는거 같아 올려 봅니다.
파일 업로드건 post데이타건 대용량 업로더시 문제가 되는 부분은 php.ini의 설정과 연관이 있습니다.

참, 아래 내용은 윈도우 & php v4.3.x를 기준으로 합니다.

먼저 ini 설정 관련해서는 다음의 내용을 확인해야 합니다.

post_max_size = nM
- 파일 업로드 시도 데이타가 post로 전송되기 때문에 당연학겠죠.^^

upload_max_filesize = nM
- post_max_size보다 작거나 같게 설정하면 됩니다.
- post_max_size보다 크게 주는건 의미가 없습니다.

위의 두 설정 값은 2048미만으로만 적용 가능합니다.
물론, 이렇게 큰값으로 줄 경우가 있겠냐 만은...ㅋㅋ

혹시라고 2047 보다 큰 값으로 주게 되면 php 엔진 자체가 오류를 발생 시킵니다.
post데이타 자체를 인식을 못해버리더군요...(이에 대한 제약에 대한 자료는 아직 찾지 못했습니다 - 테스트 결과 확인)

이 외의 설정은 실제로 필요치 않습니다.
단, 실행 시간과 관련해 max_execution_time을 거론하시는 분들이 있으신데, 그렇진 않은거 같고 실제 대용량 업로더와 관련 있는 설정은 max_input_time입니다.
max_execution_time
- 스크립트 페이지(.php)의 프로그램 실행 시간
max_input_time
- 스크립트 페이지로 제어가 넘어 오기 전에 php 엔진이 데이타를 업로더 받는 시간

위와 같이 두개의 설정값이 따로 있는거 같구요, 통상 업로더 용량이 커지면 스크립트 실행 시간도 많이 지긴 하겠지만 2기가 업로더 받은 파일을 특정 영역으로 복사하는데 30초 씩이나 걸리진 않겠죠...(맞을까...?)

그렇다고 업로더 용량이 크다고 해서 실제 ini설정에서 조정해 주는건 적절하지 못한건 같구요, 업로더 페이지에서 set_time_limit(0)로 설정하고 돌리는게 더 안전하리라 봅니다.

set_time_limit는 실행시간과 데이타 업로더 시간에 동시에 작용하는 것으로 코드상에 넣을 수 있기 때문에 안전하게 상용할수 있다고 봅니다.

또한, ini 설정에 memory_limit를 거론하기도 하는데 이것은 업로드 용량 제한과는 상관이 없습니다.
단지, 업로드 되는 용량를 버퍼링 하는 것으로 시스템 퍼포먼스에만 영향이 있는거 같습니다.(시스템에 메모리가 많다면 올려주는게 좋게지만 그냥 두어도 상관이 거의 없습니다.)

결과적으로 ini설정은
post_max_size
upload_max_filesize
두가지만 하시면 된답니다.
그리고 필요에 따라서 set_time_limit를 설정하시구요.^^

다들 아시겠지만 정리해 봤습니다.

아파치 서버에서의 제약이 추가적으로 더 있는거 같은데 그쪽은 잘 몰라서...
(누가 정리해 주시면 감사하겠습니다.^^)
 

 울라떵  05-12-01 17:11
 
apache conf 설명문중..
...LimitRequestBody 는 클라이언트가 요청시 http 프로토콜을 통해 서버가 제공할 수 있는 메시지의 크기를 byte 단위로 정의하는 것으로 무한대를 의미하는 0부터 2,147,483,647(2Giga) 까지 설정 가능하며 ...

↑ 2기가 이상은 안된다는 얘기지요? 
 

관련자료

댓글 0
등록된 댓글이 없습니다.
Today's proverb
친절은 사회를 움직이는 황금의 사슬이다.