<?php
ob_start(); // включаем буферизацию вывода
session_start(); // стартуем сессию(если нужна)
/* тут некий код наш */
echo 'Goodbye my friend!'; // пишем нечто в буфер
session_write_close(); // записываем сессию с сохранением
set_time_limit(0); // делаем лимит времени выполнения бесконечным(не обязательно)
ignore_user_abort(true); // игнорим что клиент отвалился и продолжаем работу
header('Connection: close'); // посылаем заголовок клиенту, чтобы он отвалился
header('Content-Length: ' . ob_get_length()); // посылаем количество байт
ob_end_flush(); // сбрасываем самый верхний буфер вывода
flush(); // сбрасываем системный буфер и отправляем
fastcgi_finish_request(); // сброс данных запроса клиенту(в случае php-fpm необходимо!)
/*
тут некий дальнейший код, он продолжит выполнение уже после закрытия связи с клиентом
*/
Источник -
https://itnots.ru/php/asinhronnost-v-php-otdat-otv...