функция sleep в PHP

177
12 марта 2019, 11:20

функция sleep в PHP на вертуальном сервере не работает как нужно , ( в PHP онлайн тесте, работает нормально) задача сделать интервал на кaждое предложение в 3 секунды (

   echo '<p>Rong see sõitis tsuhh tsuhh tsuhh,</p>';
   flush();
   sleep(3);
   echo '<p>piilupart oli rongijuht.</p>';
   sleep(3);
   echo '<p>Rattad tegid rat tat taa,</p>';
   sleep(3);
   echo '<p>rat tat taa ja tat tat taa.</p>';
   sleep(3);
   echo '<p>Aga seal rongi peal,</p>';
   sleep(3);
   echo '<p>kas sa tead, kes olid seal?</p>';
   sleep(3);)

просто виснет и загружается весь текст, а не выводит , каждое предложение с интервалом в 3 секунды

Answer 1

Сохраняете набор предложений в массив, проходите в цикле по массиву, и на каждой итерации делаете сброс буфера и трёхсекундный сон:

$words = [
    'Rong see sõitis tsuhh tsuhh tsuhh,',
    'piilupart oli rongijuht.',
    'Rattad tegid rat tat taa,',
    'rat tat taa ja tat tat taa.',
    'Aga seal rongi peal,',
    'kas sa tead, kes olid seal?',
];
foreach ($words as $word) {
    echo "<p>$word</p>";
    flush();
    sleep(3);
}

UPD Ещё вариант с передачей GET-параметров:

$sleep = 3; // Время обновления
$file = 'view.txt';
$words = [
    'Rong see sõitis tsuhh tsuhh tsuhh,',
    'piilupart oli rongijuht.',
    'Rattad tegid rat tat taa,',
    'rat tat taa ja tat tat taa.',
    'Aga seal rongi peal,',
    'kas sa tead, kes olid seal?'
];
$k = isset($_GET['k']) ? (int) abs($_GET['k']) : 0;
$view = file_exists($file) ? file_get_contents($file) : '';
$view .= "<p>$words[$k]</p>";
file_put_contents($file, $view);
empty($words[++$k]) ?: header("Refresh:$sleep; url=?k=$k");
if ($k == count($words)) {
    file_put_contents($file, '');
    $view .= '<a href="?">Refresh</a>';
}
echo $view;

Но у этого варианта недостаток в том, что обновлять страницу можно только по ссылке
(или руками в адресной строке удалять параметры)

См. Демо на хостинге

READ ALSO
Как отправить с сайта сообщение с кнопками в Телеграм?

Как отправить с сайта сообщение с кнопками в Телеграм?

хочу разобраться как сделать кнопку в сообщении TelegramВ общем, на сайте есть кнопка "Заказать звонок", открывается попап с формой есть инпуты:...

213
Как реализовать локализацию через URL

Как реализовать локализацию через URL

На сайте реализовано три локализацииru, de и en

146
Вывести результат функции PHP до её вызова

Вывести результат функции PHP до её вызова

Вопрос такой: есть ли способ, с которым я бы мог задать параметры в функцию после <h1>123</h1> , а результат бы вывелся перед этими цифрами?

163
Вывод meta_query

Вывод meta_query

Возникла проблема:

138