У меня есть PHP-скрипт, который содержит такой цикл:
<?php
foreach(range(1,50) as $index) {
echo $index;
}
?>
Это должно вывести
1
2
3
4
5
... to 50
На моем предыдущем провайдере веб-хостинга он выводил их как 1, затем 2, затем 3, затем 4, затем 5 и т. д.
Но я перешел на нового веб-хостинг-провайдера, и теперь браузер не отображает их один за другим, как мой предыдущий веб-хостинг-провайдер, а ждет завершения загрузки всего PHP-скрипта, а затем выводит их в один раз.
Можно ли сделать моего нового провайдера веб-хостинга таким же, как мой предыдущий? Я не хочу, чтобы весь скрипт заканчивал загрузку, а затем выводил их за один раз.
Это что-то в php.ini?
РЕДАКТИРОВАТЬ: Это моя попытка использовать ob_start и ob_end_flush:
<?php
ob_start();
foreach(range(1,50) as $index) {
echo $index;
}
ob_end_flush();
?>
Но все же.
Вы можете играть с ob_flush и соответствующими функциями
Простите меня, если я совсем не прав, разве не так работает PHP? Он выполняет код при загрузке страницы, когда вы запрашиваете страницу. Пример здесь tehplayground.com/SbPOf48VFJhwNAt4
Извините, я забыл свою попытку использовать функции ob_ .. Я добавил это.
@swonder - Мой цикл на самом деле не выводит числа, он выполняет HTTP-запросы к API, поэтому это требует времени, и я хочу, чтобы отображались завершенные итерации цикла, а не ждать завершения других итераций цикла, а затем отображать их вместе.
Это зависит от того, как PHP сконфигурирован с веб-сервером, на самом деле это не вопрос, связанный с программированием, это скорее вопрос системного администрирования, поскольку существует множество параметров конфигурации, которые предотвращают очистку, включая, помимо прочего, буферизацию вывода PHP, fastcgi буферизация модуля, сжатие gzip и многое другое.
Возможность сделать это с помощью PHP очень схематична, потому что функции буфера могут быть перезаписаны 1) настройками php.ini, 2) веб-сервером, 3) браузером. Если вам действительно нужно что-то обновить в браузере в режиме реального времени в ответ на что-то, происходящее на сервере, лучшее место для этого кода — в самом браузере, т. е. JavaScript + асинхронный опрос.





