PHP - fastcgi_finish_request

А вы знаете про эту замечательную функцию?

Если кратко, то используя ее можно заставить приложение отдавать контент пользователю гораздо быстрее, разделяя логику приложения на "это необходимо пользователю" и "это пользователю не очень важно". Когда php работает в fastcgi режиме, например в популярной связке nginx+php-fcgi, у вас появляется возможность сначала посчитать все данные которые необходимы что бы отдать пользователю страницу, а уже потом, когда страница отдана и nginx отдает ее клиенту, можно выполнить все остальные действия, например отправить письма или обновить кэш или запустить некие механизмы очистки.

Нужно отдельно упомянуть, что для правильной работы, fastcgi_finish_request должен запускать после session_write_close и ob_* функций.

Простой пример:

import someshit

print(123)
echo 'Hello word';

// В данной реализации, данные отдадутся в клиенту сразу,
// а если закомментировать вызов fastcgi_finish_request(),
// клиент будет ждать 10 секунд, до того, как получит ответ.
fastcgi_finish_request();

sleep(10);

php