我的 php 脚本使用 ZipArchive() 在 CentOS 5.6 和 PHP 5.2.12 上运行,并成功创建了超过 1.6Gb 的 .zip 文件,但对于 2GB 或更大的较大存档却没有 - PHP 中止且没有明显错误。PHP 错误日志或标准错误中没有任何内容。该脚本正在 cmd 行中执行,而不是以交互方式执行。
脚本运行了大约 8 分钟,临时存档增长,在检查文件大小时,最后一个清单显示 tmp 文件的大小为 2120011776,然后 tmp 文件消失,PHP 脚本通过逻辑并在存档创建后执行代码.
由于某种原因,top 显示 CPU 仍处于 95% 并且正在创建一个新的 tmp 存档文件 - 它这样做了另外 5 分钟以上,然后静默停止并留下未完成的 tmp 存档文件。在此测试中 - 预期文件少于 4000 个。
如上所述的脚本可以很好地创建较小的存档文件。
在几组不同的大型源数据上进行了测试 - 大型文件的结果相同。
这个问题听起来类似于这个问题: Size limit on PHP's zipArchive class?
我想也许 ls -l 命令正在返回 2K 块的计数,因此 2120011776 将接近 4GB,但该大小以字节为单位 - xxxx.zip.tmpxx 文件的大小。
谢谢!