За последние 24 часа нас посетили 63297 программистов и 1740 роботов. Сейчас ищут 892 программиста ...

Как проверить не ушел ли пользователь с моей страницы?

Тема в разделе "PHP для новичков", создана пользователем ladzio, 28 янв 2008.

  1. ladzio

    ladzio Активный пользователь

    С нами с:
    28 янв 2008
    Сообщения:
    8
    Симпатии:
    0
    У меня такая проблема:
    Откривается файл по url, он долго загружается, и мне нужно узнать после открытия файла,но до завершения скрипта, не ушел ли пользователь с моей страницы.
    Как ето сделать?
     
  2. RomanBush

    RomanBush Активный пользователь

    С нами с:
    5 дек 2007
    Сообщения:
    798
    Симпатии:
    0
    Адрес:
    200 км от Москвы
    В <body onload=""> добавить аяксовый код, который будет отсылать обратно на сервер фразу "ку-ку".
    Если "ку-ку" пришло - значит страница загрузилась. Если не пришло - не загрузилась.
    Кстати, вопрос - а что означает фраза "пользователь ушёл с моей страницы" - отошёл от компьютера?

    Цитата с http://php.ru/manual/introduction.html
    это обозначает, что, когда пользователь только начинает загружать страницу, php-код уже закончил свою работу.
    А если ещё и почитать, что такое http-протокол, то можно вычитать, что, после того, как пользователь загрузил страницу с сервера, соединение между пользователем и сайтом закрывается.
     
  3. RomanBush

    RomanBush Активный пользователь

    С нами с:
    5 дек 2007
    Сообщения:
    798
    Симпатии:
    0
    Адрес:
    200 км от Москвы
    440Hz
    Кажется, я начал понимать, зачем ты их заставляешь устанавливать всё ручками с нуля...
     
  4. ladzio

    ladzio Активный пользователь

    С нами с:
    28 янв 2008
    Сообщения:
    8
    Симпатии:
    0
    Да в том и весь прикол что посетитетель уже ушел а скрипт дальше работает.
    Я спрашываю как в через php-скрипт узнать есть ли он еще на связи(если ето возможно).
     
  5. Anonymous

    Anonymous Guest

    Если посетитель ушел, скрипт дальше не работает. Читать про connection_status() и connection_aborted()
     
  6. dark-demon

    dark-demon Активный пользователь

    С нами с:
    16 фев 2007
    Сообщения:
    1.920
    Симпатии:
    1
    Адрес:
    леноград
  7. Штаны

    Штаны Guest

    Не понимаю, как вы можете быть такими категоричными, если на эти ваши утверждения есть масса исключений? :)
     
  8. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    Кстати, все это не очень хорошо, имхо. Представьте, что ваш скрипт обрабатывает запрос и выполняет некую последовательность действий. В середине работы от клиента пришел разрыв соединения и PHP оборвал работу скрипта. Половина действий выполнена, половина нет, половина данных добавлена в базу, половина нет...
     
  9. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    1) транзакции
    2) писать логи добавления по частям, или просто поднимать флаг пользователем, а на серваке выполнять например кроном.
     
  10. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    armadillo
    Костыли... проще уж флаг ignore_user_abort() выставить.
     
  11. dark-demon

    dark-demon Активный пользователь

    С нами с:
    16 фев 2007
    Сообщения:
    1.920
    Симпатии:
    1
    Адрес:
    леноград
    фигасе 8-[___] это транзакции-то костыли?
     
  12. ladzio

    ladzio Активный пользователь

    С нами с:
    28 янв 2008
    Сообщения:
    8
    Симпатии:
    0
    Запускаю вот такой код браузером:
    <?
    sleep(15);
    $f=fopen("data.txt",a);
    fwrite($f,"text\n");
    ?>
    Через 3сек выключаю браузер. Еще через 12сек в "data.txt" появляется "text\n".
    Скрипт роботал еще 12сек после потери связи.
     
  13. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    dark-demon
    В данном случае - безусловно. Транзакции не для этого совсем были придуманы.
     
  14. Anonymous

    Anonymous Guest

    ladzio, сказано же,
     
  15. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    логика скрипта не должна зависеть от времени активности пользователя.
    Если он передал какие-то данные - они сначала добавились, потом что-то еще происходит.
    Если он запросил какие-то данные - то они сформировались и ему выдались. Не по кускам.
     
  16. ladzio

    ladzio Активный пользователь

    С нами с:
    28 янв 2008
    Сообщения:
    8
    Симпатии:
    0
    Не знаю в чем здесь глюк но и connection_aborted(), и connection_status() постоянно выдают 0.
    Я уже и браузеры разны пробовал и стоп нажымал , и выключал. И кроме того скрипт постоянно работает до конца без ignore_user_abort().