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

本文探讨了在内存和时间有限的系统中,如何通过多次调用PECLZip或后台进程实现100MB文件的分段压缩。作者提供了PHP示例代码,并介绍了如何绕过内存限制,以有效压缩大文件并处理10个ZIP文件的场景。
摘要由CSDN通过智能技术生成

100 MB文件 – > 10个ZIP通话(每通话10个邮箱) – > 1个ZIP文件

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

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

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

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

解决方法:

你以前试过PECL Zip吗?

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

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,zip,pclzip

来源: https://codeday.me/bug/20190620/1243905.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值