2012-07-26 2 views
0

Resumable.js 라이브러리를 사용하여 1MB 청크로 파일을 업로드 한 다음 32 비트 Linux 서버에서 PHP를 사용하여 파일을 다시 연결합니다 (PHP 5.3.14, Apache 2.0)PHP를 사용하여 2GB 파일에 파일 청크 추가

2GB가 넘는 파일을 제외하면이 기능은 훌륭하게 작동합니다.

2GB보다 큰 파일을 업로드하면 정상적으로 작동하지만 파일 속성을 실제로 볼 때 크기는 항상 2147483648 바이트입니다.

필자는 PHP가 32 비트 정수를 사용하는 데 한계가 있음을 잘 알고 있습니다.

나는 CFLAGS = "- D_FILE_OFFSET_BITS = 64"플래그를 설정하고 PHP를 다시 컴파일하면 PHP가 2GB보다 큰 파일을 열 수 있음을 읽었습니다.

내 질문에, 내가 이렇게하면 내 문제를 해결할 것인가 아니면 문제가 아니라 파일을 여는 것이지만 파일을 추가하는 것입니까?

내 2GB 문제가 해결되면 이론적 최대 파일 크기는 여전히 더 높습니까?

내가 완전히 떨어져있어이 플래그로 내 문제가 해결되지 않으면 64 비트 서버로 전환하는 것 외에 다른 해결책이 있습니까?

+1

어떤 파일 시스템입니까? 대개 PHP는 대용량 파일에 문제가 없기 때문에 (비록 내가 항상 64 비트 시스템을 사용하도록 권장 할지라도) 따라서 사용되는 파일 시스템의 한계라고 생각합니다. – KingCrunch

답변

1

Linux의 32 비트 컴퓨터에서 2GB 파일 크기 제한이 있습니다 (http://linuxmafia.com/faq/VALinux-kb/2gb-filesize-limit.html 참조).

전체 파일을 더 작은 크기의 덩어리로 유지하거나 64 비트 컴퓨터로 가져 오는 것이 좋습니다. 일반적으로 성능상의 이유로 여러 시스템에서 청크 구현을 통해 GB보다 큰 파일을 피할 수 있습니다.

+0

흠 ... 음, FTP를 통해 2GB보다 큰 파일을 업로드 할 수 있습니다 .... 죄송합니다, Linux OS가 32 비트 버전이라는 사실을 기반으로하는 32 비트라고 가정하고있었습니다. PHP가 설치되었습니다. 32 비트 또는 64 비트 인 경우 공유 클라이언트에서 내 클라이언트를 확인해야합니다. FTP를 통해 2GB보다 큰 파일을 업로드 할 수 있다는 사실은 32 비트 버전의 PHP가 설치된 64 비트 OS가 있음을 나타내는 것입니까? – user1555774

+0

그건 아주 가능합니다. - 기계가 64 비트이더라도 32 비트 버전의 많은 소프트웨어가 포함 된 Redhat 서버에 문제가있었습니다. – Pyrce

+0

서버가 32 비트인지 64 비트인지 확실히 알기를 기다리지 만, FTP를 통해 2GB 이상의 파일을 업로드 할 수 있으므로 64 비트 OS라고 가정하고 32 비트 PHP 버전. CFLAGS = "- D_FILE_OFFSET_BITS = 64"플래그를 설정하고 PHP를 다시 컴파일하면 문제가 해결 될 것이라고 생각합니까? 아니면 여전히 64 비트 버전의 PHP를 설치해야합니까? – user1555774

관련 문제