2014-10-22 24 views
1

我需要创建一个JPG文件大的zip压缩包。压缩生成突破64MB - 无法增加主机的内存限制。如何创建具有低memory_limit的较大的zip文件?

我试过很多方法来生成压缩文件但都失败了:

  • PHP的ZipArchive类。
  • EXEC( “拉链-r file.zip * .JPG”)
  • pclzip(有选项可以生成临时文件,而不是存储)

也许有另一种方式来创建一个使用流的zip文件/ temppprary文件的内存不足?

感谢您对您的脚本建议

+0

你读过这篇文章?它看起来有帮助而且相当全面。 http://stackoverflow.com/questions/4357073/on-the-fly-zipping-streaming-of-large-files-in-php-or-otherwise – 2014-10-22 07:31:45

+0

@NickAllen谢谢,我试过的fopen,它也没有工作。 :(我认为在服务器上也有一个机器本身的限制,不仅在PHP。 – MilMike 2014-10-22 08:11:36

回答

1

您可以尝试的set_time_limit(SEC)或函数ini_set( '的max_execution_time',秒)。

你可以尝试这样的事情

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); 
    } 
} 

它将保持的max_execution_time复位到30秒钟,然后压缩每10个文件。

我用了10个文件作为一个例子,你可以设置它取决于你的平均文件大小。