У меня эта история уже давно.
Приспособился, при заливке НЕ нужно обновлять страницу "504 gateway time-out", заливка продолжается пока не зальет весь файл. А если обновить, сразу пойдут дубли (получается, товар уже заливается, появляется страница 504, нажимаем Обновить страницу, модуль начинает выполнять параллельную задачу по добавлению с той строки которая указана на момент нажатия Обновить в sos, как то так).
Отслеживаю окончание заливки по ftp, как только в admin/uploads исчезнет sos.tmp значит весь товар из файла залит, теперь можно трогать админку.