使用PHP PCL Zip在许多调用中压缩单个大文件

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了使用PHP PCL Zip在许多调用中压缩单个大文件脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
100 MB文件 – > 10个ZIP通话(每通话10个邮箱) – > 1个ZIP文件

应该发起10次调用,将一个100 MB的文件添加到Zip文件中(比如每次调用10 MB Zipping).

问题是我们有一个具有内存和时间限制的系统(对于一个呼叫,它不会处理超过10到15MB的内存).

因此,通过多次调用来压缩大文件是基本的想法.

如果需要,我准备提供更多数据.

解决方法

你以前试过PECL Zip吗?

只需使用以下@L_406_13@压缩两个文件,没有任何内存限制问题.时间限制可能会重置.我的环境:memory_limIT为3MB,max_execution时间为20秒.

<?PHP
set_time_limit(0);
$zip = new ZipArchive();
$zip->open('./test.zip',ZipArchive::CREATE);
$zip->adDFile('./testa'); // 1.3 GB
$zip->addFile('./testb'); // 700mb
$zip->close();

注意:set_time_limit()不适用于PHP< 5.4使用save_mode = on 另一种方法可能是在后台进程中创建zip.这可以避免可能的memory_limit问题. 这是一个例子:
http://pastebin.com/7jBaPedb

用法

try {
  $t = new zip('/bin','/tmp/test.zip');
  $t->zip();

  if ($t->waitForFinish(100))
    echo "Succes :)";
  else
    echo $t->getOutput();
} catch ($e) {
  echo $e->getMessage();
}

您可以在数据库中编写pid并在文件完成后提供服务,而不是等到进程结束.

脚本宝典总结

以上是脚本宝典为你收集整理的使用PHP PCL Zip在许多调用中压缩单个大文件全部内容,希望文章能够帮你解决使用PHP PCL Zip在许多调用中压缩单个大文件所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。