【问题标题】:Handling large compressed file in php在 php 中处理大型压缩文件
【发布时间】:2014-11-06 13:08:26
【问题描述】:

我正在尝试在我的服务器中一次压缩许多图像。 压缩文件的大小范围为 250MB-750MB 我正在使用 pclzip 库。

我正在使用共享主机,因此最大执行时间和内存限制是有限的。 我怎么解决这个问题?或者请告诉我任何替代解决方案。

谢谢

【问题讨论】:

  • 也许这些操作太大而无法在共享主机上完成。这就是您在执行时间和内存使用方面受到限制的原因 - 您不希望其他人的进程减慢您的操作...
  • 也许尝试增量压缩文件,而不是“一次”全部压缩。
  • 是的,我尝试按照您的建议逐步压缩文件,即多个 zip 文件而不是一个大 zip 文件。但在这种情况下,脚本的 max_execution_time 也超过了我的服务器限制 30 秒。
  • 我的意思是每次将一张图片添加到 zip 文件中,而不是一次添加多个文件。
  • 是的,做到了,但脚本在 max_execution_time 内失败。你有什么建议吗 - 1. 将应用程序托管到专用/虚拟服务器 2. 将应用程序部署在其他共享主机中,我可以增加脚本的 max_execution_time。

标签: php pclzip


【解决方案1】:

您是否尝试过在脚本中使用set_time_limit ( int $seconds )

请原谅伪代码是这样的

initialise the zip class

foreach ( files in the directory as $idx => $name) {
    add $name to the zip file;

    // every 10 files zipped, reset the max_execution_time
    if ( $idx > 0 && $idx % 10 == 0 ) {
        set_time_limit ( 30 );
    }
}

这应该会继续将 max_execution_time 重置为每 10 个压缩文件 30 秒。

也许 10 是一个小数字,但你明白了。

或者,您可以尝试将 max_execution_time 设置为 0,就像这样,只在此脚本的顶部一次。

set_time_limit( 0 );

【讨论】:

  • 谢谢,我已经按照你的建议尝试了。但问题是当我联系主机的支持团队时,他们说我无法更改/更改他们的任何默认值。你对这个场景有什么建议?选择其他可以设置这些值的主机或使用专用/虚拟服务器会更好吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-02
  • 2012-06-21
  • 2021-06-19
相关资源
最近更新 更多