私のローカル システムでは、PHP の組み込み zip ライブラリは、10 ファイルの 24 MB zip を 21 ファイルの 51 MB zip に約 800 ミリ秒でマージできます。これは、報告された 200 ミリ秒/ファイルに匹敵しますが、ファイルの大きさはわかりませんまたは使用しているハードウェアの種類。
ガイドの作成者が最初に使用した Java ライブラリとは異なり、PHP の zip ライブラリは C で実装されているため、作成者が見たのと同じ Java から C へのパフォーマンスの向上は見られません。そうは言っても、ChillkatのQuickAppend
仕組みやPHPのzipライブラリとの比較はわかりませんが、PHPで行うかChillkatで行うかに関係なく、事前に圧縮されたファイルに追加するのが最速のソリューションのようです.
$destination = new ZipArchive;
$source = new ZipArchive;
if($source->open('a.zip') === TRUE
&& $destination->open('b.zip') === TRUE) {
$time_start = microtime(true);
$temp_dir = "/tmp/zip_" . time();
mkdir($temp_dir,0777,true);
$source->extractTo($temp_dir);
$source->close();
$files = scandir($temp_dir);
$file_count = 0;
foreach($files as $file) {
if($file == '.' || $file == '..')
continue;
$destination->addFile("$temp_dir/$file");
++$file_count;
}
$destination->close();
exec("rm -rf $temp_dir &");
$time_end = microtime(true);
$time = $time_end - $time_start;
print "Added $file_count files in " . ($time * 1000). "ms \n";
}
出力
-rw-rw-r-- 1 fuzzytree fuzzytree 24020997 Jun 4 15:57 a.zip
-rw-rw-r-- 1 fuzzytree fuzzytree 51418980 Jun 4 15:57 b.zip
fuzzytree@atlas:~/testzip$ php zip.php
Added 10 files in 872.43795394897ms
fuzzytree@atlas:~/testzip$ ls -ltr *zip
-rw-rw-r-- 1 fuzzytree fuzzytree 24020997 Jun 4 15:57 a.zip
-rw-rw-r-- 1 fuzzytree fuzzytree 75443030 Jun 4 15:57 b.zip