У меня была похожая проблема, когда создание zip-архива заняло много времени, но мне нужно было загрузить более одного файла.
То, что спасло меня, было
http://pablotron.org/?cid=1568
Zip Stream - это класс, который создает zip-архив на лету и во время загрузки.
Большинство классов «на лету» создают архив (пока вы ожидаете начала загрузки) и только после того, как он полностью создан, они начинают отправлять вам архив. Этот класс начинает отправку архива по мере его создания, так вы сэкономите время, которое вы хотели.