質問: $zip->open($zip_file, \ZIPARCHIVE::CREATE | \ZIPARCHIVE::OVERWRITE); if ($result !== true) { return false; } // ※今回の肝 $zip->addDir('csv', 'csv', true); $zip->addDir('images', 'images', true); $zip->close(); // ストリームに出力 header('Content-Type: application/zip; name="' . $zipFileName . '"'); header('Content-Disposition: attachment; filename="' . $zipFileName . '"'); header('Content-Length: '.filesize($zip_file)); echo file_get_contents($zip_file); // 一時ファイルを削除しておく unlink($zip_file); exit(); ?> ```
回答: えっと、非同期通信します。 まず、非同期でZip圧縮処理を叩いて、バックグラウンドで圧縮処理を走らせます。 その圧縮処理では進行状況をログに出力します。 一方、別の非同期通信で、さっきのログを読んで圧縮が終わったか確認し続けます。 圧縮が終わっていたら、晴れて、ファイルをダウンロードします。 以上ですん。