Выполняется ли PHP-скрипт при закрытии браузера?

12 3
V
На сайте с 04.06.2014
Offline
54
1818

Аяксом отправляется post-запрос php-скрипту. Скрипт выполняется в течение нескольких десятков секунд. Будет ли прервано выполнение скрипта при закрытии браузера?

Я понимаю, что php-скрипт выполняется на стороне сервера и по идее закрытие браузера не должно прекратить выполнение скрипта. Но хочу быть уверен на 100%.

Партнёрка №1 в essay-нише (https://goo.gl/YfTPtG)
web-developer
На сайте с 24.11.2014
Offline
15
#1

V
На сайте с 04.06.2014
Offline
54
#2

И что это за картинка? Скрипт ничего не возвращает, ничего не выводит на странице.

A
На сайте с 10.12.2013
Offline
50
#3

Информация посылается на сервер. Скрипт будет выполняться до конца в не зависимости от того закрыт ли браузер или нет. Серверу не известно когда закрывается браузер.

R
На сайте с 13.04.2009
Offline
160
#4

Чтобы скрипт продолжал работать для этого есть функция ignore_user_abort.

На php уже лет 5 не пишу, но думаю что ничего с тех времён не изменилось.

Artmik:
Информация посылается на сервер. Скрипт будет выполняться до конца в не зависимости от того закрыт ли браузер или нет. Серверу не известно когда закрывается браузер.

Известно, автор же написал что скрипт выполняется несколько десятков секунд, всё это время сокет весит.

Советнички 😂.

web-developer:

В подписи написано опыт 5 лет, а ответ нормальный дать не можете, вместо этого картинка про работу браузеров уровня 2000х годов.

bbon
На сайте с 01.04.2006
Offline
127
#5
rushter:
Советнички 😂.

К вашему посту у меня образовалась тоже изрядная доля скепсиса.

Обрыв tcp-соединения может детектироваться операционной системой, путем посылки пробного пакета (в линуксе, например, пробный пакет посылается раз в два часа).

Понятно, что для веба это не вариант, поэтому, веб-сервер может самостоятельно пытаться определять обрыв соединения - но эта возможность определяется уже используемым http-сервером и его настройками - возможно проверка идет раз в секунду, возможно - раз в пять секунд, возможно - еще дольше. В общем, при обрыве соединения на стороне клиента, запущенный процесс будет еще некоторое время выполняться, и никакие пхп-шные функции здесь ничего не изменят.

Mad_Man
На сайте с 10.11.2008
Offline
162
#6
bbon:
К вашему посту у меня образовалась тоже изрядная доля скепсиса.
Обрыв tcp-соединения может детектироваться операционной системой, путем посылки пробного пакета (в линуксе, например, пробный пакет посылается раз в два часа).
Понятно, что для веба это не вариант, поэтому, веб-сервер может самостоятельно пытаться определять обрыв соединения - но эта возможность определяется уже используемым http-сервером и его настройками - возможно проверка идет раз в секунду, возможно - раз в пять секунд, возможно - еще дольше. В общем, при обрыве соединения на стороне клиента, запущенный процесс будет еще некоторое время выполняться, и никакие пхп-шные функции здесь ничего не изменят.

http://php.net/manual/ru/function.ignore-user-abort.php

http://php.net/manual/ru/function.connection-status.php

bbon
На сайте с 01.04.2006
Offline
127
#7

Вы меня невнимательно прочитали, пхп ничего не знает о состоянии соединения до тех пор, пока об этом ему не сообщит сервер. Да и процесс прибьет сам сервер.

Mad_Man
На сайте с 10.11.2008
Offline
162
#8
bbon:
Вы меня невнимательно прочитали, пхп ничего не знает о состоянии соединения до тех пор, пока об этом ему не сообщит сервер. Да и процесс прибьет сам сервер.

Это вы невнимательно читаете. Ваш опус никак не относится к проблеме ТС: вы описываете поведение диаметрально противоположное желаниям топикстартера.

R
На сайте с 13.04.2009
Offline
160
#9
bbon:
К вашему посту у меня образовалась тоже изрядная доля скепсиса.
Обрыв tcp-соединения может детектироваться операционной системой, путем посылки пробного пакета (в линуксе, например, пробный пакет посылается раз в два часа).
Понятно, что для веба это не вариант, поэтому, веб-сервер может самостоятельно пытаться определять обрыв соединения - но эта возможность определяется уже используемым http-сервером и его настройками - возможно проверка идет раз в секунду, возможно - раз в пять секунд, возможно - еще дольше. В общем, при обрыве соединения на стороне клиента, запущенный процесс будет еще некоторое время выполняться, и никакие пхп-шные функции здесь ничего не изменят.

Чего спорить, напишите скрипт со sleep() и проверьте 🍿.

Я в своё время писал парсеры, постеры на php и вроде бы ещё не забыл о чём говорю 😒.

Mad_Man
На сайте с 10.11.2008
Offline
162
#10
rushter:
Чего спорить, напишите скрипт со sleep() и проверьте .
Я в своё время писал парсеры, постеры на php и вроде бы ещё не забыл о чём говорю .

Не, он не о том. Персонаж выше скатился в демагогию и намекает, что определить точное (совсем точное) время разрыва соединения не получится, вследствие чего скрипт проработает ещё немного после времени последнего успешно переданного бита информации. Но нахрена об этом вещать - я не просёк.

12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий