За последние 24 часа нас посетили 32982 программиста и 1756 роботов. Сейчас ищут 856 программистов ...

Как прервать соединение скрипта и браузера?

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

  1. lsync

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

    С нами с:
    16 янв 2008
    Сообщения:
    3
    Симпатии:
    0
    Доброго времени суток.

    Имею скрипт, который, запустившись, что-то должен выдать запустившему его браузеру и прервать связь. Например, такой:
    Код (Text):
    1. ob_implicit_flush(true);
    2. print("You are connected and disconnected");
    3. // Здесь нужно сообщить браузеру о завершении передачи данных
    4. sleep(100); // А здесь выполняется длительная работа
    При этом большинство браузеров терпеливо висит и ждет с пустой страницей, пока отработает ВЕСЬ скрипт. Как сообщить браузеру, что соединение закрыто и он больше ничего не получит?

    Вариант
    Код (Text):
    1. print("You are connected and disconnected");
    2. header("Connection: close");
    3. sleep(100); // А здесь выполняется длительная работа
    выдает ошибку "headers already sent by..." - наверное, резонно. die() не устраивает - много еще надо сделать :) Даже вариант с переадресацией (здесь на помойке нашел :)
    Код (Text):
    1. print("You are connected and disconnected");
    2. print "<html><head><META HTTP-EQUIV=\"Refresh\" content =\"0;URL=http://mail.ru\"></head></html>";
    3. sleep(100); // А здесь выполняется длительная работа
    ждет, и только потом переадресует.

    Как прервать связь или сразу переадресоваться на другую страницу?
     
  2. Ti

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

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    PHP ничего на этот счет не предусмотренно

    Может сработать такой javascript:
    HTML:
    1. <script>document.close()</script>
     
  3. lsync

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

    С нами с:
    16 янв 2008
    Сообщения:
    3
    Симпатии:
    0
    Да, не радует :(

    А можно ли создать своеобразный "стартер", который выдаст информацию, запустит другой (долговременный) скрипт там же на сервере, передав ему параметры, и тут же завершится?

    Вообще, есть ли какая-нибудь многозадачность или возможность скрипта самостоятельно стартовать другие свои же скрипты в параллельном, а не последовательном потоке? Понимаю, что Текстовый препроцессор и многозадачность - не клеятся друг к другу, но все же?
     
  4. Ti

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

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    lsync
    в поиск, обсуждалось
     
  5. Amian

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

    С нами с:
    15 мар 2007
    Сообщения:
    189
    Симпатии:
    0
    try/catch block