Evitar 504 Gateway Time-out con archivo PHP

Tengo un archivo recursivo que debe hacer un sinfín de consultas a la Base de datos, modificaciones, eliminaciones, etc.

Limite el listado para poder ejecutarlo por lotes más pequeños y el tiempo es menor.

Pero en algunos casos salta el 504 Gateway Time-out. (Se ha subido el límite en el servidor)

He pensado dos soluciones:

1- Utilizara el set_time_limit() para controlar el tiempo. De tal forma que sepa el tiempo que dispongo antes de que se agote y actuar en consecuencia antes de llegar al punto crítico.

2- utilizar shell_exec() para ejecutar el script en segundo plano directamente.

Desconozco si la opción 2 soluciona el problema del 504.

Qué opción me recomiendan?