Re: Тонкости работы FastCGI (phpfpm)
Maxim Dounin
mdounin на mdounin.ru
Вт Апр 13 13:41:48 UTC 2021
Hello!
On Tue, Apr 13, 2021 at 02:52:00PM +0700, Victor Sudakov wrote:
> Aleksandr Sytar wrote:
> >
> > > Что должно
> > > произойти, когда пользователь отменил HTTP запрос, или браузер закрыл?
> > > nginx закроет соответствующее соединение с php-fpm ? А PHP-код продолжит
> > > работу? Или должен прерваться?
> > >
> > > Прошу прощения за сумбурное изложение, поправки и указания на неверное
> > > понимание логики работы с благодарностью принимаются.
> > >
> > >
> > >
> > Раз - https://habr.com/ru/post/179399/
> > Двас - https://www.php.net/manual/ru/function.fastcgi-finish-request.php и
> > крути себе дальше в базе что надо.
>
> Я наверное плохо сформулировал вопрос, но мне как раз интересно видеть
> обратное поведение. Закрыли браузер - обслуживавший этот сеанс процесс
> PHP завершился, что бы ни делал в этот момент.
>
> А в приведенных ссылках обратную задачу пытаются решить.
Прямая задача, как я понимаю, нормально решается только в случае,
если php-скрипт что-то возвращает клиенту, подробнее тут:
https://www.php.net/manual/en/features.connection-handling.php
https://www.php.net/manual/en/function.ignore-user-abort.php
https://www.php.net/manual/en/function.connection-aborted.php
Но я не настоящий сварщик, про php знаю мало.
> Антиоффтопик. nginx-то что делает в момент закрытия соединения
> клиентским браузером: закрывает ли соответствущее соединение с fastcgi
> upstream-ом?
В общем случае да. И именно для того, чтобы бэкенд узнал о том,
что соединение закрыто клиентом и выполняемая работа больше не
нужна. Если этого по каким-то не требуется, то можно использовать
директиву fastcgi_ignore_client_abort:
http://nginx.org/r/fastcgi_ignore_client_abort
Кроме того, соединение не будет закрыто, если используется
кэширование или fastcgi_store, так как в этих случаях ответ
бэкенда полезен вне зависимости от того, будет ли он отправлен
конкретному клиенту.
--
Maxim Dounin
http://mdounin.ru/
Подробная информация о списке рассылки nginx-ru