에 대한 실행 나는 다음과 같은 PHP 파일이 있습니다PHP POST 및 대용량 파일 업로드
- fileUploadForm.php
- handleUpload.php
fileUploadForm 다음과 같은 출력이 포함
-
을
- 출력 $ _SESSION [ 'errorMessage'] (있는 경우)
- 오우 handleUpload.php에 게시물
handleUpload.php 다음과 같은 작업을 수행하는 파일 업로드 양식 tput을 :
- 의 유효성을 검사 세션을
- 의 유효성을 검사 파일 ($ _SESSION 설정 (유효성 검사가 실패하면 로그인 리디렉션) [ 'ERRORMESSAGE'] 유효성 검사가 실패 할 경우) 바이러스
- 있는 MoveFile
- 업데이트 데이터베이스 01
- 스캔 파일
대용량 파일 업로드에 스크립트가 문제가 있습니다. 필자는 파일 업로드와 관련하여 php.ini 설정을 테스트 목적으로 엄청나게 거대한 것으로 설정했습니다. 따라서 문제가 구성 문제라고 생각하지 않습니다.
다음 행동이 나를 혼란 :
을 나는 파일이 tmp를 성장 볼 때, 파일 업로드 잘 설정 한 max_input_time지나 계속됩니다. 내 이해는 max_input_time이 초과되면 스크립트가 종료되고 차례로 파일이 업로드된다는 것입니다. 왜 이런 일이 일어나지 않는지에 대한 생각은 없습니까?
파일 업로드 중류를 중지하고 fileUploadForm (다시 제출하지 않음)을 새로 고침하면 스크립트는 handleUpload에 설정된 파일 유효성 검사와 관련된 오류 메시지를 출력합니다. 이것은 파일 업로드가 완료되지 않았더라도 handleUpload의 코드 행이 실행되고 있음을 나타냅니다. PHP는 스크립트를 실행하고 비동기 적으로 양식 데이터를 받습니까? 모든 코드를 실행하기 전에 모든 양식 데이터가 수신 될 때까지 스크립트가 대기 할 것이라고 생각했을 것입니다. 그러나이 가정은 내가 보는 행동에 모순됩니다. 데이터 POST/스크립트 실행의 순서는 무엇입니까?
나머지 설정 값과 함께 max_input_time이 테스트를 위해 엄청나게 크게 설정되면 매우 큰 업로드가 완료됩니다. 그러나 나머지 스크립트는 죽는 것처럼 보입니다. 즉 바이러스 스캔 및 파일 이동이 일어나지 않으며 데이터베이스가 업데이트되지 않습니다. 스크립트의 각 동작에 대해 오류 처리가 설정되어 있지만 오류는 발생하지 않습니다. 페이지가 죽은 것 같습니다. 이것이 일어날 수있는 이유에 대한 생각/그러한 오류를 잡는 방법?
미리 감사드립니다. 케이트
나는 fileUploadForm.php 만 새로 고침하고 실제로 다시 제출하지는 않습니다. 하지만 이제 handleUpload에 설정된 세션 정보가 포함됩니다. 따라서 일부 코드가 실행되고 있습니다. 그리고 전체 파일이 tmp에 업로드되기 전에 실행 중입니다. – user480029
PHP 문서가 이런 식으로 일관성이없는 것 같습니다. 응답의 첫 번째 부분에서와 같이 max_input_time을 정의합니다. "POST 및 GET과 같이 입력 데이터를 구문 분석 할 수있는 최대 시간 (초)입니다. 서버의 모든 데이터를 수신하는 순간부터 시작까지 측정됩니다 스크립트 실행 "(즉, 업로드 완료 후 카운트 시작). 그러나 문제 해결 섹션에서 max_input_time이 충분히 높지 않으면 일부 파일 업로드가 완료되지 않음을 나타냅니다. 그러나 어느 쪽이든, 나는 파일 업로드가 계속되는 것을보고, 어떤 스크립트 실행이 일어나고, 실패한다. – user480029
질문은 "새로 고침"으로 무엇을 의미합니까? 브라우저의 주소 표시 줄로 가서 Enter 키를 누르거나 F5 키를 누르거나 새로 고침을 클릭합니까? 두 번째 작업을 수행하면 브라우저는 양식 데이터를 다시 제출하고 확인하지 않으면 계속할 수 없도록 요청할 것입니다. 첫 번째 작업을 수행하면 세션 데이터 만 존재한다는 것이 정상입니다. – Narf