본문 바로가기
잡식

PHP에서 대용량 파일 업로드 시 유의사항

by 불멸도도 2024. 8. 6.

PHP에서 파일 업로드를 진행할 때, 특히 대용량 파일을 업로드할 경우 다양한 설정과 제약사항으로 인해 문제가 발생할 수 있습니다. 이러한 문제를 미리 예방하고 안정적인 파일 업로드를 위해 필요한 설정과 유의사항을 자세히 알아보겠습니다.

PHP 파일 업로드 설정

session.gc_maxlifetime 설정

세션 데이터가 '쓰레기'로 취급되고 청소될 시간을 초 단위로 지정합니다. 이는 세션 유지 시간과 관련이 있으며, 세션이 만료되기 전에 파일 업로드가 완료되도록 하기 위해 중요한 설정입니다.

기본값: 1440초 (24분)

세션이 만료되면 업로드된 데이터도 사라질 수 있으므로, 대용량 파일 업로드 시에는 session.gc_maxlifetime 값을 충분히 길게 설정하는 것이 좋습니다.

max_input_time 설정

POST, GET, 파일 업로드 등의 입력 데이터를 처리하는 데 허용하는 최대 시간을 설정합니다.

기본값: 600초 (10분)

대용량 파일 업로드 시에는 파일 크기에 비례하여 이 시간을 적절히 늘려주는 것이 필요합니다. 예를 들어, 2GB 파일을 업로드하려면 네트워크 속도와 서버 처리 속도에 따라 충분한 시간을 설정해야 합니다.

max_execution_time 설정

스크립트 실행 시간 제한을 설정합니다. PHP 스크립트가 이 시간 내에 완료되지 않으면 중지됩니다.

기본값: 30초

대용량 파일 업로드 시에는 이 값을 충분히 길게 설정하여 스크립트가 파일 업로드를 완료할 수 있도록 해야 합니다.

반응형

upload_max_filesize 설정

업로드할 파일의 최대 크기를 지정합니다.

기본값: 2M

대용량 파일을 업로드하려면 이 값을 업로드하려는 파일 크기에 맞게 설정해야 합니다. 예를 들어, 2GB 파일을 업로드하려면 다음과 같이 설정할 수 있습니다:

upload_max_filesize = 2G

post_max_size 설정

POST 방식으로 전송할 데이터의 최대 크기를 지정합니다. 이 값은 파일 업로드와 POST 데이터를 포함한 총 크기를 의미합니다.

기본값: 8M

대용량 파일을 업로드하려면 post_max_size 값을 upload_max_filesize 값보다 크게 설정해야 합니다. 예를 들어, 2GB 파일을 업로드하려면 다음과 같이 설정할 수 있습니다.

반응형
post_max_size = 2G

memory_limit 설정

스크립트가 사용할 수 있는 메모리의 최대값을 지정합니다.

기본값: 128M

대용량 파일 업로드 시에는 메모리 사용량이 증가할 수 있으므로, 적절한 메모리 제한을 설정해야 합니다. 예를 들어, 다음과 같이 설정할 수 있습니다:

memory_limit = 512M

설정 예제

위의 설정값을 적용한 php.ini 파일 설정 예제는 다음과 같습니다.

반응형
memory_limit = 512M
post_max_size = 2G
upload_max_filesize = 2G
max_execution_time = 300
max_input_time = 600
session.gc_maxlifetime = 1440

대용량 파일 업로드 시 추가 고려사항

네트워크 속도

대용량 파일을 업로드할 때는 서버와 클라이언트 간의 네트워크 속도도 중요한 요소입니다. 업로드 시간이 너무 길어지면 사용자가 업로드를 중단할 가능성이 높아지므로, 가능한 빠른 네트워크 환경을 제공하는 것이 좋습니다.

반응형

업로드 진행 표시

사용자 경험을 개선하기 위해 파일 업로드 진행 상황을 실시간으로 표시하는 기능을 구현하는 것이 좋습니다. 이를 위해 JavaScript와 AJAX를 활용한 진행률 표시기를 사용할 수 있습니다.

파일 무결성 검사

대용량 파일 업로드 시 데이터 손상이나 전송 오류를 방지하기 위해 파일 무결성 검사를 수행하는 것이 중요합니다. 이를 위해 MD5나 SHA-256과 같은 해시 알고리즘을 사용하여 파일의 무결성을 확인할 수 있습니다.

결론

PHP에서 대용량 파일 업로드를 원활하게 처리하기 위해서는 다양한 설정값을 적절히 조정하고, 추가적인 네트워크 및 사용자 경험 요소를 고려해야 합니다. 위에서 설명한 설정값과 추가 고려사항을 바탕으로 안정적인 파일 업로드 환경을 구축할 수 있습니다.

반응형