Синтезируемый текст PHP передо сном

Я хочу, чтобы PHP произвел некоторый текст, затем спал в течение с половиной секунды, и затем произвел еще некоторый текст.

<?php

echo 'Output one.';

usleep(1500000);

echo 'Output two.';

?>

Моя проблема состоит в том, что весь текст выпускается одновременно - ожидая те 1,5 секунды. Я считал что-то о функции, вызванной сброс - но это, кажется, не работает. Возможно, я не использую его запись. Любая справка ценилась бы ^^

Заранее спасибо!

7
задан arik 23 May 2016 в 19:18
поделиться

4 ответа

проверить

<?php

ob_start();

echo 'Output one.';
ob_flush();
usleep(1500000);
echo 'Output two.';
ob_flush();

?>
11
ответ дан 6 December 2019 в 08:41
поделиться

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

1
ответ дан 6 December 2019 в 08:41
поделиться

Ответ Pentium10 не совсем сработал для меня .. Однако, когда я перешел на страницу документации PHP, там было много хороших комментариев.

http://php.net/manual/en/function.ob-flush.php

У меня это сработало, используя Firefox 3.5.9, PHP 5.2.11, Apache, работающий на локальном ноутбуке с Windows 7:

echo "test";
ob_end_flush();
flush();
usleep(x);
echo "test";

Ob_end_flush () имел решающее значение для получения данных.

7
ответ дан 6 December 2019 в 08:41
поделиться

Я думаю, что это скорее проблема http-запросов/ответов. В командной строке ваш скрипт работает нормально.

Обычно ответ подготавливается полностью и отправляется клиенту. Если ваш ответ имеет такой размер, что необходимо отправить несколько tcp-пакетов, может случиться так, что первые пакеты будут отправлены, прежде чем ваш скрипт будет готов к обработке. Так что все зависит от размера вывода. В зависимости от клиента/браузера, может случиться так, что первые пакеты будут отображены до того, как полный ответ придет на клиент.

Как ответил Noufal Ibrahim, пока я печатал, я полностью с ним согласен. Делайте это асинхронно.

2
ответ дан 6 December 2019 в 08:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: