Как избежать ошибку 504 Gateway Time-out?
Судя по 504 Gateway Time-out у вас перед PHP стоит nginx. Если это так - добавьте в конфигурацию сайта настройку для ожидания времени ответа upstream. Если у вас используется FastCGI то:fastcgi_read_timeout 30m;
если используется проксирование, то:proxy_read_timeout 30m;
А вообще такие скрипты запускают не через веб-сервер, а из консоли, устанавливая при этом set_time_limit(0);
Самое простое - увеличить время ожидания на сервере до необходимого.