Как останавливать выполнение php при обрыве запроса?
Всем привет! У меня есть бэкенд (php-fpm + nginx) и мобильные клиенты.
Судя по логам nginx довольно часто происходит ситуация, когда либо у клиентов обрывается интернет, либо сами отменяют запрос. При этом php-скрипт продолжает выполнять действие.
Мне хотелось бы его остановить (там нет какой-то логики, просто обращение к строрннему api) когда клиент отваливается. Можно ли такое как-то сделать?
Алексей: меня беспокоют не логи. Меня беспокоит что в час-пик кол-во запросов возрастает в сотню раз. И сторонее API начинает дико тупить, выдавая ответ не за 3 секунды, а за 2 минуты (это проблема на их стороне, а кешировать их ответ нельзя). И получается что пользователи в час пик не дожидаются ответа, делает повторный запрос, и еще один, и еще один... Ну и тогда уже мой сервер начинает виснуть. Проблему можно решить многими способами, но через прекращение выполнения скрипта самы простой.
mitaichik: Я понял вашу проблему, но вряд ли вам поможет просто прибиывать скрипт, так как запрос к стороннему api уже сформирован, отправлен и api занимается его выполнением. Даже если вы прервете свой скрипт - не факт что стороннее api поступит так же. Вам надо решать проблему с повторной отправкой запросов со своей стороны, хотя бы через onbeforeunload, отображение анимации "данные загружаются" и тд. Если страница просто висит и непонятно что она делает - естественно что пользователи будут пытаться ее перезагрузить.