функция 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 секунды
Сохраняете набор предложений в массив, проходите в цикле по массиву, и на каждой итерации делаете сброс буфера и трёхсекундный сон:
$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;
Но у этого варианта недостаток в том, что обновлять страницу можно только по ссылке
(или руками в адресной строке удалять параметры)
См. Демо на хостинге
Сборка персонального компьютера от Artline: умный выбор для современных пользователей