php PHPで大容量ZIPファイルを作成する Nozomu.Kon 2018年10月10日 / 2018年10月10日 PHPにて画像ファイルをZIP形式にまとめてダウンロードする機会がありました。 PHPに存在するZipArchiveはとっても便利なんだけど容量の壁が存在します。 (32bitのライブラリを使用している以上 仕方ないですね) ではどうすれば2GBを超えるZIP形式の圧縮ファイルを作れるのか? 色々調べてみたところtar形式からzip形式に変換するのが妥当な様子でした。 従来はZipArchiveを直接扱っていたので $zip = new ZipArchive(); $zip->open("ZIP圧縮ファイル名", ZIPARCHIVE::CREATE); $zip->addFile("圧縮対象の実パス", "圧縮後のZIP内パス"); ... $zip->close(); このような流れでしたが、 大容量ZIPを作成するにはPharData(中身はtarコンテナですね)からZIPに変換を行います。 $path = "一時圧縮ファイル名"; $pd= new PharData($path); $pd->addFile("圧縮対象の実パス", "圧縮後のZIP内パス"); ... $zip = $pd->convertToData(Phar::ZIP); // zipコンテナ化 unlink($path); // 一時圧縮ファイルを削除 $path = $zip->getPath(); // 圧縮後のファイルパス あとはファイルダウンロードの手順と同じになります。 php ZIP ABOUT ME Nozomu.Kon 集客導線、SNS導線、広告数値自動取得、LP/HP/CSS、ファネルツールなどなど個人・法人のスモールビジネスをIT/AIのチカラでフルサポートしています。 BLOG:https://embedded-property.net