sorry_i_noob
@sorry_i_noob

Почему на локальном сервере flush работает, а когда заливаю на хостинг, то нет? Что мне нужно поменять на хостинге, чтобы flush работал?

Здравствуйте. Есть код, который выводит какой-то текст, после чего происходит flush и sleep. И все это в цикле. Получается постепенный вывод текста. На локальном сервере это работает. А на хостинге - нет. В чем может быть проблема? Что мне нужно поменять, чтобы работало и на хостинге тоже?

Вот код:
for ($i = 0; $i < 3; $i++) {
	echo "number = $i.<br>";
	flush();
	sleep(2);
}

У меня на локальном сервере каждые 2 секунды выводится строка (первая строка моментальное выводится - даже ждать не надо). А на хостинге надо ждать 6 секунд, после чего сразу выводится три строки.
  • Вопрос задан
  • 70 просмотров
Пригласить эксперта
Ответы на вопрос 2
kotomyava
@kotomyava
Системный администратор
Не делайте так, и не надейтесь, что где-то вообще такой подход будет работать.
Даже если вы заставите сервер так отдавать построчно, любой прокси между клиентом и сервером сломает это постепенное обновление, и будет дожидаться полного ответа сервера, и только потом отдаст его клиенту.

Чтобы получать периодические обновления используйте ajax и таймер на клиенте, или websocket, но это в данном случае сложнее, да и не нужно.
Ответ написан
@grinat
На сервере как буферизация где-то включена. Это может помочь:
// X-Accel req for nginx
        header('X-Accel-Buffering: no');

если нет, то пиши в саппорт
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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