ZipArchive()를 사용하여 CentOS 5.6 및 PHP 5.2.12에서 실행되는 PHP 스크립트가 1.6Gb 이상인 경우 .zip 파일을 만들지 만 2GB 이상의 큰 보관 파일은 만들지 않는 경우 - PHP는 명백한 오류는 없다. PHP 오류 로그 또는 표준 오류의 아무 것도 없습니다. 스크립트가 대화식으로 실행되지 않고 cmd 행에서 실행 중입니다.PHP 대용량 .zip 파일을 만들 때 중단됨
스크립트가 약 8 분 동안 실행되고 임시 보관 파일이 커지고 파일 크기를 확인하는 동안 마지막 목록에 tmp 파일의 크기가 2120011776 인 것으로 표시되고 tmp 파일이 사라지고 PHP 스크립트가 논리를 통과하여 코드를 실행합니다 아카이브가 생성 된 후
위쪽에 CPU가 여전히 95 %로 표시되고 새 tmp 아카이브 파일이 생성됩니다.이 파일은 5 분 이상 더 기다리면 자동으로 완료되지 않은 tmp 아카이브 파일이 중지되고 남습니다. 이 테스트에서는 예상 파일 수가 4000 개 미만입니다.
스크립트는 작은 보관 파일을 만드는 데 적합합니다.
대용량 원본 데이터의 여러 집합에서 테스트되었습니다. 대용량 파일의 경우에도 마찬가지입니다.
이 문제는이 질문에 대한 비슷한 소리 : Size limit on PHP's zipArchive class?
나는 어쩌면 생각 -l 명령은 2K 블록의 수를 반환하고, 따라서 2120011776 4GB의에 가까운 것입니다하지만 크기가 바이트에있는 LS - 크기 xxxx.zip.tmpxx 파일의
감사합니다.
PHP가 32 비트 서버를 실행하는 경우 ZIP 확장명은 내부적으로 2GB 파일 (부호있는 정수)로 제한 될 수 있습니다. 어쨌든 .zip 형식 자체가 그 이상으로 기능하는지 확실하지 않습니다. – mario
스크립트가 완전히 죽지 않는 경우 시간 또는 메모리 제한 문제가 아닙니다. Zip 라이브러리에는 한도가 있어야합니다. 문서에서 상한선을 제안합니까? –
볼 수있는 제한이 없습니다. 메모리가 고갈되고 ziparchive가 완료되었거나 실패한 경우 스크립트가 코드를 계속 실행하면 PHP 오류가 발생할 것으로 예상됩니다. – blainelang