Simba, как вынести в фон?
Обычно делается на очередях подобное.
Принцип примерно следующий:
Есть воркер, который выполняет различные задачи, которые кидают ему. Он следит за очередью (таблица в бд, redis и т.д.) и когда в очередь поступает задача, начинает её выполнять.
Когда пользователю нужно сделать что-то долгое, юзается такая очередь. Условно пользователь жмёт кнопку, задача отправляется в очередь, а ему выводится надпись с предложением подождать.
После выполнения задачи пользователь сможет увидеть результат. Этого можно добиться просто периодическим обновлением страницы или вебсокетами.
Но всё это как правило не работает на обычных хостингах.