Поместите вашу долгосрочную работу в другой скрипт php, например
background.php:
sleep(10);
file_put_contents('foo.txt',mktime());
foreground.php
$unused_but_required = array();
proc_close(proc_open ("php background.php &", array(), $unused_but_required));
echo("Done);
Вы увидите «Готово» немедленно, а файл будет записан через 10 секунд.
Я думаю, что proc_close работает, потому что мы не предоставляем proc_open никаких каналов и дескрипторов файлов.