Учитывая, что у вас уже есть приличная готовая часть и ее нет смысла переделывать, я бы реализовал это так:
1. Добавляю в форму некий UID (rand)
2. onSubmit, кроме отправки формы к generate.php я дизаблю контролы и отправляю на сервер ajax запрос с этим UID (/generationcheck.php?uid=....) в коллбеке — разлочивание контролов.
3. в generate.php я добавляю в самое начало коннект к мемкешу (допустим) и в него ставлю отметку, что начал генерить файл с UID=$_POST['UID']. после генерации, я отмечаю в мемкеше, что все сделано (например, меняю значение с 0 на 1)
4 файл generationcheck.php подключается к мемкешу, проверяет, что файл еще генерится и засыпает в цикле while на секунду. Как только при очередной проверке замечено, что файл сгенерился — удаляем переменную из мемкеша и отправляем респонс клиенту, чтобы раздизаблить контролы на форме. Ну и аварийный выход через 60 циклов, на случай если генерация файла с ошибкой произошла.
Как-то так, если не хочется ифреймы воротить. Потом можно будет сделать просмотр — какие именно файлы сейчас генерятся на серваке при желании. Но у вас на одного клиента будут висеть два открытых коннекта, что не есть гуд.