Scripts de execução longa não devem ser executados no navegador / Apache. Você deve executá-lo em segundo plano com o PHP CLI em vez do FPM. Os scripts da CLI não têm tempo limite e não interferem na operação do Apache.
Você pode programar o script para ser executado regularmente usando cronjobs ou pode ativá-lo do navegador fazendo algo como escrever um arquivo temporário (por exemplo, colocar um arquivo chamado run_script
no diretório do site e removê-lo no final do seu script) de definir um sinalizador em um banco de dados ou outro back-end.
Ao optar pela segunda maneira, você ainda precisa de um cronjob (que pode ser executado uma vez a cada minuto) que verifique a existência dessa entrada de arquivo / banco de dados e dispare o script quando ele for encontrado (você também pode criar um listener que monitora isso constantemente, em vez de uma vez a cada minuto, mas isso é bastante intensivo e provavelmente excessivo para a maioria dos casos de uso).
Depois de disparar tudo o que você envia de volta para seus usuários é apenas um aviso como "Aguarde, estamos processando sua solicitação. Verifique novamente em alguns minutos". Dessa forma, eles também não precisam manter o navegador aberto para manter a solicitação em execução e podem fazer outras coisas enquanto isso.