LINUX.ORG.RU
ФорумAdmin

php fpm убить запрос если клиент отсоединился

 ,


0

2

Есть связка nginx+php-fpm. Хочу чтобы убивались запросы со стороны php, если клиент отсоединился

Например клиент запрашивает http://host/script.php

wget --read-timeout=1 --no-check-certificate -t 1 https://host/script.php

Через 1 сек. клиент закрывает соединение(--read-timeout=1), но nginx не закрывает соединение с сокетом /run/php-fpm.sock
netstat -nap | grep php | grep CONNECTED | grep -v mast
unix  2      [ ]         STREAM     CONNECTED     51186    21008/php-fpm: pool  /run/php-fpm.sock

и скрипт продолжает работать

Сам script.php засыпает за 10000 сек.
<?php
sleep(10000);


fastcgi_ignore_client_abort on в nginx не помогает

Да, можно поставить в самом php лимиты max_execution_time или request_terminate_timeout, но хотелось бы чтобы nginx закрывал сам соединение c php, если клиент уже отсоединился и не ждет результата работы скрипта

★★★★

Обоим (nginx и php-fpm) нужно объяснить, что делать при завершении соединения.

ignore_user_abort в php и fastcgi_ignore_client_abort в nginx теоретически должны давать нужный результат.

Только вот вопрос - чем занят скрипт? Что за длительная операция?

vel ★★★★★
()
Ответ на: комментарий от vel

Ух, про ignore_user_abort я то совсем забыл. Завтра попробую. Бывает через веб запускаю скрипты, которые парсят гиговые логи...ну что б волю им сильно не давать навеяло. Да и вообще, мали ли, что может быть, нужно глушить скрипт, если клиента нет. Результат некому отсылать

gobot ★★★★
() автор топика
Ответ на: комментарий от gobot

Если скрипты твои, то возможно в них нужно добавить проверку состояния соединения через connection_status().

vel ★★★★★
()

А ещё не плохо бы подумать про целостность данных - что будет, если скрипты будут выполняться частично ?

spirit ★★★★★
()
Ответ на: комментарий от spirit

Такое будет только для определенных запросах, не для всех

gobot ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.