如何用低memory_limit创建大型zip文件?

时间:2014-10-22 07:27:38

标签: php zip

我需要从jpg文件创建一个大型zip存档。邮件生成中断64MB - 没有办法增加主机的内存限制。

我尝试了很多方法来生成zip文件,但都失败了:

  • PHP ZipArchive类。
  • exec(" zip -r file.zip * .jpg")
  • pclzip(带有生成临时文件而非内存的选项)

也许有另一种方法可以使用具有低内存inpact的stream / tempprary文件创建zip文件?

感谢您的建议

1 个答案:

答案 0 :(得分:1)

您可以在脚本中尝试set_time_limit(sec)或ini_set(' max_execution_time',sec)。

您可以尝试这样的事情

initialise your zip class

foreach ( files in the directory as $idx => $name) {

    add $name to your zip file;

    // every 10 files zipped, reset the max_execution_time
    if ( $idx > 0 && $idx % 10 == 0 ) {
        set_time_limit ( 30 ); //if it doesnt work try to use ini_set('max_execution_time', 30);
    }
}

它将继续每10个你压缩的文件将max_execution_time重置为30秒。

我使用10个文件作为示例,您可以根据平均文件大小进行设置。