Intereting Posts
Создание новой «команды» в PHP Symfony 2 Forward Request, проходящий по параметрам GET / POST Могу ли я создать таблицу MYSQL с помощью PDO-параметризованного оператора? Загрузка изображения из базы данных Android в MySQL Проводка массива с curl_setopt mongo Ошибка PHP-приложения: Неустранимая ошибка: исключить исключение «MongoException» с сообщением «». не разрешено в ключе Msgstr "Соединение для элемента управления, определенное в вашей конфигурации, не удалось" с phpMyAdmin в XAMPP Межмодульная связь PHP Echo Timezone на основе смещения GMT Простой кросс-браузер, загрузка файла jQuery / PHP с индикатором выполнения как получить результаты в реальном времени с помощью jquery? Как я могу выполнять несколько процедур непрерывно? Как удалить продукт из категории magento 1.5 xampp в окне 7 не может получить доступ к файлам в подпапке внутри C: / xampp / htdocs mysqli соединение не работает внутри функции?

Как отображать HTML в браузере постепенно в течение длительного периода времени?

Нужно ли мне передавать HTTP-заголовки, чтобы сообщить браузеру, что мой сервер не будет немедленно закрывать соединение и отображать при получении HTML-кода? Есть ли что-нибудь необходимое для того, чтобы HTML-код постепенно отображался как flush ()?

Этот метод использовался для таких вещей, как чат, но я думаю об использовании его для приложения типа COMET.

Related of "Как отображать HTML в браузере постепенно в течение длительного периода времени?"

Длительный опрос – это обычная техника, чтобы сделать что-то подобное; кратко изложить его, он работает следующим образом:

  1. Клиент отправляет XHR на сервер.

    • Если данные готовы, сервер немедленно возвращает это.
    • Если нет, сервер держит соединение открытым до тех пор, пока данные не станут доступными, а затем вернет это.
    • Если время ожидания запроса, вернитесь к 1).
  2. Страница, запущенная на клиенте, получает эти данные и делает то, что она делает с ней.

  3. Вернитесь к 1)

Именно так Facebook реализует функцию чата .

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

Клиент закроет соединение, когда он не получит никаких данных за определенное время. Этот тайм-аут не может зависеть от заголовков HTTP. Он специфичен для клиента и обычно устанавливается на 120 секунд IIRC.

Таким образом, все, что вам нужно сделать, – это регулярно отправлять небольшие объемы данных, чтобы избежать превышения таймаута.

Я думаю, что более надежное решение – это страница с таймером Javascript, который опросит сервер для новых данных. Сохранение ответа открытым – это не то, для чего был разработан протокол HTTP.

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

echo "<HTML><HEAD.../HEAD><BODY>"; while (running) { echo "printing html... </br>"; } echo "</BODY></HTML>"; //all done 

Попробуйте навсегда фрейм (как в gmail)

Все эти техники – это просто хаки, http не предназначен для этого.

в конце вашего скрипта, используйте что-то вроде этого (если у вас есть буферизация вывода, поставив ob_start () в верхней части страницы

 <?php set_time_limit(0); // Stop PHP from closing script after 30 seconds ob_start(); echo str_pad('', 1024 * 1024, 'x'); // Dummy 1 megabyte string $buffer = ob_get_clean(); while (isset($buffer[0])) { $send = substr($buffer, 0, 1024 * 30); // Get 30kbs bytes from buffer :D $buffer = substr($buffer, 1024 * 30); // Shorten buffer echo $send; // Send buffer echo '<br />'; // forces browser to reload contents some how :P ob_flush(); // Flush output to browser flush(); sleep(1); // Sleep for 1 second } ?> 

Этот скрипт в основном выводит 1 мегабайт текста на 30 килобайтах (имитируется) независимо от того, насколько быстро выполняется соединение пользователя и сервера.

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

Я бы предложил вам исследовать реализацию таких функций с использованием Ajax, а не простого старого HTML. Это позволяет значительно повысить гибкость в плане архитектурного проектирования и пользовательского интерфейса