Я хочу вернуть окончательный ответ пользователю, прежде чем я сделаю все данные жесткой обработки.
Я хочу просто получить запрос от пользователя, вернуть ответ, это может быть простой json,
и пользователь увидит данные, но на моей стороне сервера я продолжу остаток обработки, вызову аналитику, изменив БД и другие.
что-то вроде этой идеи: продолжить обработку php после отправки ответа HTTP
Для более тяжелых задач вы должны использовать событие kernel.terminate
. Поэтому любая задача в этом случае выполняется после отправки ответа. Это способ, как работает катушка памяти swiftmailer.
Проверьте StreamedResponse:
$response = new StreamedResponse(); $response->setCallback(function () { echo 'Hello World'; flush(); sleep(2); echo 'Hello World'; flush(); }); $response->send();
Подробнее здесь: http://symfony.com/doc/current/components/http_foundation/introduction.html#streaming-a-response
Хотя этот метод имеет свою простоту и полезность в некоторых случаях, это не лучший пользовательский интерфейс на веб-странице. HTML-страница будет полностью загружена только в конце вашего скрипта, что может вызвать зрительные раздражения и отсутствие поддержки Javascript, неполную визуализацию CSS и т. Д.
Если вы идете на лучший визуальный опыт, вы можете загрузить пустую страницу, а затем сделать одновременные вызовы ajax, которые будут выполнять обработку. то есть. каждый запрос AJAX обрабатывает 5 записей и выводит их.
Таким образом, на странице может появиться индикатор выполнения или какая-либо другая анимация …