使用PHP将文件块附加到2GB文件

时间:2012-07-26 19:46:48

标签: php file-io append 32-bit chunks

我正在使用Resumable.js库以1 MB的块上传文件,然后在32位Linux服务器上使用PHP将它们拼凑回来(PHP 5.3.14,Apache 2.0)

除了2GB以上的文件外,这种方法很有效。

当我上传大于2GB的文件时,它似乎工作正常,但实际查看文件属性时,大小总是2147483648字节。

从我的阅读中,我理解这是PHP使用32位整数的限制。

我已经读过设置CFLAGS =“ - D_FILE_OFFSET_BITS = 64”标志并重新编译PHP将允许PHP打开大于2GB的文件。

我的问题是,如果我这样做,这会解决我的问题,还是文件的打开不仅仅是问题,还有文件的追加?

如果这样可以解决我的2GB问题,那么理论上最大文件大小是否仍然存在(更高)?

如果我完全偏离基础并且此标志不能解决我的问题,除了切换到64位服务器之外还有其他任何可能的解决方案吗?

1 个答案:

答案 0 :(得分:1)

Linux在32位计算机上遇到2GB文件大小限制(请参阅http://linuxmafia.com/faq/VALinux-kb/2gb-filesize-limit.html)。

您可能需要考虑将整个文件拆分为一些较小的块,或者获得64位计算机。通常,出于性能目的,在许多系统中避免使用大于GB的文件而不是块实现。