У меня такая проблема: Откривается файл по url, он долго загружается, и мне нужно узнать после открытия файла,но до завершения скрипта, не ушел ли пользователь с моей страницы. Как ето сделать?
В <body onload=""> добавить аяксовый код, который будет отсылать обратно на сервер фразу "ку-ку". Если "ку-ку" пришло - значит страница загрузилась. Если не пришло - не загрузилась. Кстати, вопрос - а что означает фраза "пользователь ушёл с моей страницы" - отошёл от компьютера? Цитата с http://php.ru/manual/introduction.html это обозначает, что, когда пользователь только начинает загружать страницу, php-код уже закончил свою работу. А если ещё и почитать, что такое http-протокол, то можно вычитать, что, после того, как пользователь загрузил страницу с сервера, соединение между пользователем и сайтом закрывается.
Да в том и весь прикол что посетитетель уже ушел а скрипт дальше работает. Я спрашываю как в через php-скрипт узнать есть ли он еще на связи(если ето возможно).
Если посетитель ушел, скрипт дальше не работает. Читать про connection_status() и connection_aborted()
Не понимаю, как вы можете быть такими категоричными, если на эти ваши утверждения есть масса исключений?
Кстати, все это не очень хорошо, имхо. Представьте, что ваш скрипт обрабатывает запрос и выполняет некую последовательность действий. В середине работы от клиента пришел разрыв соединения и PHP оборвал работу скрипта. Половина действий выполнена, половина нет, половина данных добавлена в базу, половина нет...
1) транзакции 2) писать логи добавления по частям, или просто поднимать флаг пользователем, а на серваке выполнять например кроном.
Запускаю вот такой код браузером: <? sleep(15); $f=fopen("data.txt",a); fwrite($f,"text\n"); ?> Через 3сек выключаю браузер. Еще через 12сек в "data.txt" появляется "text\n". Скрипт роботал еще 12сек после потери связи.
логика скрипта не должна зависеть от времени активности пользователя. Если он передал какие-то данные - они сначала добавились, потом что-то еще происходит. Если он запросил какие-то данные - то они сформировались и ему выдались. Не по кускам.
Не знаю в чем здесь глюк но и connection_aborted(), и connection_status() постоянно выдают 0. Я уже и браузеры разны пробовал и стоп нажымал , и выключал. И кроме того скрипт постоянно работает до конца без ignore_user_abort().