我的php脚本使用ZipArchive()在CentOS 5.6和PHP 5.2.12上运行,并且成功地创建了超过1.6Gb的.zip文件,但不是用于更大的2GB或更大的归档 - PHP中止没有明显的错误。 PHP错误日志或stderr中没有任何内容。脚本正在cmd行执行,而不是交互式执行。PHP在创建大型.zip文件时中止
脚本运行大约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文件。
谢谢!
如果您的PHP运行32位服务器,则ZIP扩展可能在内部限制为2GB文件(带符号整数)。无论如何,不知道.zip格式本身的功能如何。 – mario 2011-04-21 14:13:21
如果脚本不完全死亡,那么它不是一个时间或内存限制问题。 Zip库中必须有一个限制。文档是否显示任何类型的上限? – 2011-04-21 14:35:23
没有限制,我已经能够看到。如果内存用完了,我会希望看到一个PHP错误,并且正如注意到脚本在我的情况下在ziparchive完成/失败之后继续执行代码。 – blainelang 2011-04-21 19:46:25