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