Welcome! Log In Create A New Profile

Advanced

Re: Тонкости работы FastCGI (phpfpm)

Victor Sudakov
April 21, 2021 04:00AM
Maxim Dounin wrote:
> On Fri, Apr 16, 2021 at 12:54:21PM +0700, Victor Sudakov wrote:
>
> > Maxim Dounin wrote:
> >
> > > > > > Я наверное плохо сформулировал вопрос, но мне как раз интересно видеть
> > > > > > обратное поведение. Закрыли браузер - обслуживавший этот сеанс процесс
> > > > > > PHP завершился, что бы ни делал в этот момент.
> > > > > >
> > > > > > А в приведенных ссылках обратную задачу пытаются решить.
> > > > >
> > > > > Прямая задача, как я понимаю, нормально решается только в случае,
> > > > > если php-скрипт что-то возвращает клиенту, подробнее тут:
> > > > >
> > > > > https://www.php.net/manual/en/features.connection-handling.php
> > > >
> > > > Спасибо, Maxim, очень полезная ссылка. Я в первом письме так и
> > > > предполагал, как должно происходить (см. последнюю строчку цитаты):
> > > >
> > > > "If the remote client disconnects, the ABORTED state flag is turned on.
> > > > A remote client disconnect is usually caused by users hitting their STOP
> > > > button. [...] You can decide whether or not you want a client disconnect
> > > > to cause your script to be aborted. Sometimes it is handy to always have
> > > > your scripts run to completion even if there is no remote browser
> > > > receiving the output. The default behaviour is however for your script
> > > > to be aborted when the remote client disconnects. "
> > > >
> > > > Другой вопрос, почему в наблюдаемом мной случае это не происходило.
> > > > Пойду посмотрю код, может там действительно какой-нибудь
> > > > ignore_user_abort стоит. В php.ini уже проверил,
> > > > ignore_user_abort => Off => Off
> > >
> > > Отмечу ещё раз, что всё это работает только в том случае, если
> > > php-скрипт что-то возвращает клиенту, и даже в этом случае нужны
> > > приседания.
> >
> > А если php-скрипт ничего не возвращает клиенту, а делает sleep(100500)
> > внутри себя, и при этом nginx закрывает соединение со скриптом,
> > connection-status в скрипте не перейдет в состояние ABORTED?
> >
> > Предположим что nginx закрывает TCP-соединение с апстримом штатно (FIN
> > -> FIN+ACK -> ACK). Или оно вообще было через Unix-socket. Таки
> > connection-status в скрипте всё равно останется NORMAL до попытки
> > вернуть клиенту какие-то данные?
>
> Именно об этом рассказано в комментариях, их стоит почитать.

Я их читал. Комментарии к "Connection handling" все очень многолетней
давности, и комментаторы больше озабочены обратной задачей: чтобы скрипт
доработал после нажатия Стоп в браузере, например закоммитил данные в
базу.

>
> И это логично: чтобы отследить закрытие соединения, нужно явно
> проверять статус этого самого соединения или ждать событий на нём.
> Это сложно и малореализуемо в рамках php с блокирующимися
> вызовами.

Тут у меня еще сработали ассоциации с обычным CGI. Там ведь насколько я
помню, закрыли stdin CGI-скрипту - и скрипт сразу прекратил выполнение.
Или тоже помню неверно?

>
> Могли бы сделать явную проверку через какой-нибудь recv(MSG_PEEK)
> непосредственно в функции connection_aborted(), но, видимо, не
> стали.

Ну мало ли, может за 10-15 лет (возраст тамошних комментариев) это
реализовали. Потому и спросил.

> В результате о том, что соединение закрыто, php узнаёт, только
> когда попытка записи ответа в соединение возвращает ошибку.

Спасибо за однозначный и четкий ответ. В документации не хватает, к
сожалению, чтобы этот момент был четко прописан.

>
> > > Об этом, в частности, рассказывается в комментариях к
> > > описанию connection_aborted(). То есть исходная задача "скрипт
> > > ждёт ответа базы 3 часа" - в php просто так не решается.
> >
> > Исходная как раз чтобы php-скрипт ничего не ждал и помирал побыстрее, если
> > nginx соединение с ним закрыл.
>
> Да, именно об этом и речь: если скрипт просто ждёт ответа базы, то
> php с ним ничего делать не будет и не прибьёт его, что бы не
> происходило с соединением. Если что-то выводит пользователю - то
> есть шанс.

OK.

--
Victor Sudakov VAS4-RIPE
http://vas.tomsk.ru/
2:5005/49@fidonet
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

Тонкости работы FastCGI (phpfpm)

Victor Sudakov April 13, 2021 01:12AM

Re: Тонкости работы FastCGI (phpfpm)

greenh April 13, 2021 03:04AM

Re: Тонкости работы FastCGI (phpfpm)

Victor Sudakov April 13, 2021 03:48AM

Re: Тонкости работы FastCGI (phpfpm)

Slawa Olhovchenkov April 13, 2021 08:08AM

Re: Тонкости работы FastCGI (phpfpm)

Victor Sudakov April 14, 2021 01:52AM

Re: Тонкости работы FastCGI (phpfpm)

Aleksandr Sytar April 13, 2021 03:06AM

Re: Тонкости работы FastCGI (phpfpm)

Victor Sudakov April 13, 2021 03:52AM

Re: Тонкости работы FastCGI (phpfpm)

greenh April 13, 2021 06:02AM

Re: Тонкости работы FastCGI (phpfpm)

greenh April 13, 2021 06:04AM

Re: Тонкости работы FastCGI (phpfpm)

Victor Sudakov April 13, 2021 06:20AM

Re: Тонкости работы FastCGI (phpfpm)

greenh April 13, 2021 06:26AM

Re: Тонкости работы FastCGI (phpfpm)

Victor Sudakov April 13, 2021 06:32AM

Re: Тонкости работы FastCGI (phpfpm)

greenh April 13, 2021 06:42AM

Re: Тонкости работы FastCGI (phpfpm)

Eugene Grosbein April 13, 2021 07:20AM

Re: Тонкости работы FastCGI (phpfpm)

Victor Sudakov April 13, 2021 06:30AM

Re: Тонкости работы FastCGI (phpfpm)

greenh April 13, 2021 06:40AM

Re: Тонкости работы FastCGI (phpfpm)

Victor Sudakov April 15, 2021 01:04AM

Re: Тонкости работы FastCGI (phpfpm)

Maxim Dounin April 13, 2021 09:42AM

Re: Тонкости работы FastCGI (phpfpm)

VovansystemS April 13, 2021 10:04AM

Re: Тонкости работы FastCGI (phpfpm)

Victor Sudakov April 15, 2021 01:04AM

Re: Тонкости работы FastCGI (phpfpm)

Maxim Dounin April 15, 2021 10:22AM

Re: Тонкости работы FastCGI (phpfpm)

Victor Sudakov April 16, 2021 01:56AM

Re: Тонкости работы FastCGI (phpfpm)

Evgeniy Berdnikov April 16, 2021 02:34AM

Re: Тонкости работы FastCGI (phpfpm)

Victor Sudakov April 16, 2021 03:28AM

Re: Тонкости работы FastCGI (phpfpm)

Evgeniy Berdnikov April 16, 2021 04:40AM

Re: Тонкости работы FastCGI (phpfpm)

Maxim Dounin April 16, 2021 10:56AM

Re: Тонкости работы FastCGI (phpfpm)

Victor Sudakov April 21, 2021 04:00AM

Re: Тонкости работы FastCGI (phpfpm)

Evgeniy Berdnikov April 21, 2021 05:08AM

Re: Тонкости работы FastCGI (phpfpm)

Victor Sudakov April 22, 2021 12:24AM

Re: Тонкости работы FastCGI (phpfpm)

Slawa Olhovchenkov April 21, 2021 06:46AM

Re: Тонкости работы FastCGI (phpfpm)

Eugene Grosbein April 21, 2021 08:16AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 287
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready