Перезаписать данные ob_flush(). Есть ли методы получше?

Ссылка скопирована
PHP
1 ответ

В общем для обновления данных использую ява скрипты. Может есть способы получше?

<div id="str"></div>  <?  for ($i = 1; $i <= 10; $i++) {  ?>     <script>         str.innerHTML = '<?= $i ?>';     </script> <?     flush();     ob_flush();     sleep(1); }

<div id="str"></div> <? for ($i = 1; $i <= 10; $i++) { ?> <script> str.innerHTML = '<?= $i ?>'; </script> <? flush(); ob_flush(); sleep(1); }

Дополнительно:

flush() и ob_flush() поменяйте местами, и вот так будет правильно!

  • AUser0, а есть разница? На результат не влияет, а пишут везде по разному.
  • aspirantes, хммм, как же вам объяснить ТАКУЮ разницу...?

    А вот возьмите съешьте палку колбасы, а потом пойдите в магазин, найдите именно эту съеденую палку колбасы и купите её. Можно так в реальной жизни? И прочитайте документацию, что именно опустошают первая и вторая команды. Тогда станет понятно.

  • aspirantes, и второй момент, непонятен смысл отправки чисел от 1 до 10 браузеру, в одном коннекте, с задержкой в одну секунду. Эдакий таймер? Так его лучше делать в Javascript-е. Сомневаюсь, что у вас этот набор цифр удаётся куда-то выводить с паузами в одну секунду.
  • AUser0, Данный код отлично работает... И колбаса работает нормально - Браузер обновляет таймер нужной цифрой... Код для примера, но захламление html скриптами напрягает, то есть значение меняется одно, но для этого 10 раз всё равно вызывается ява скрипт. Использовать планируется например в отображение процента загрузки данных. Хотя await тоже не умеет выводить ob_flush - возможно наверное только Xhr == 3, но это не точно.

    А в примере с колбасой, я так полагаю - это скорее у двоих есть информация какая колбаса нужна, мы удаляем у первого, и удаляем у второго, но, после отправки.

  • aspirantes, отлично работает в том смысле, что открывается страница, и в ней с паузой в 1 секунду появляется очередная цифра?
  • а где здесь " ява скрипты"?
  • Ипатьев, ок, джава, не знаю как вам удобно.
  • А где здесь "джава"?
  • Ипатьев, Посередине
    <script>         str.innerHTML = '<?= $i ?>';     </script>

    <script> str.innerHTML = '<?= $i ?>'; </script>

  • Ну и зачем здесь оно?
    Что изменится, если просто написать <?= $i ?>, без вот этих "джава скриптов"?
  • Ипатьев, Будет дописывать, в конец, каждую итерацию, джава меняет значение в одном блоке.
  • ТС вообще не понимает что делает...
    Смотри, тут на тупые вопросы дают тупые ответы. Стоило хотя бы расписать что ты делаешь, то есть какую задачу ты решаешь. Например, я в вопросе вижу кусок php-говнокода, который пытается иммитировать работу js. Ты понимаешь как он будет работать? Смотри, php работает следующим образом: приходит запрос, вебсервер берет его и пихает в php, php отработал запрос, выдал результат и умер. Результатом может быть все что угодно, в твоем случае это html. Ты на него пытаешься повесить работу JS. Страница у тебя будет крутиться в загрузке, при этом на странице в цикле будет моргать таймер. Но PHP не асинхронный чтобы что-то еще делать в этот момент.
  • irishmann, И какие для этого, имеются другие методы? Предположим: я отправил файл, в нём 100 строк. Сервер при обработке одной строки, возвращает 1%. И почему, подскажите я в это время не могу отправить аякс на другой скрипт php, по-моему вполне себе будет рабочий вариант, которому аналогов нет (или я не знаю, в этом кстати и заключается вопрос - "есть ли методы для обновления кэша браузера, или менять возможно только дописывая html?). Единственное, что меня беспокоит, так это то, что обновить данные выйдет, только через javascript, а в html, например, в один id разные данные подогнать не получится.
  • Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Анна SEO Ответ

    Для перезаписи вывода буфера в PHP можно использовать функцию ob_flush(). Она позволяет сбросить буфер вывода и отправить его клиенту. Однако, есть и другие методы, которые могут быть более эффективными в определенных случаях.

    Один из таких методов - использование более гибкого и мощного класса Output Buffering в PHP. Этот класс позволяет управлять не только выводом буфера, но и его содержимым, размером, временем жизни и другими параметрами. Для использования Output Buffering в PHP можно создать объект этого класса и вызывать его методы для управления выводом.

    Пример использования Output Buffering в PHP:

    // Включаем буферизацию вывода
    ob_start();
     
    // Ваш код здесь
     
    // Получаем содержимое буфера
    $output = ob_get_contents();
     
    // Очищаем буфер
    ob_clean();
     
    // Ваш код здесь
     
    // Отправляем содержимое буфера клиенту
    echo $output;
     
    // Завершаем буферизацию вывода
    ob_end_flush();

    // Включаем буферизацию вывода ob_start(); // Ваш код здесь // Получаем содержимое буфера $output = ob_get_contents(); // Очищаем буфер ob_clean(); // Ваш код здесь // Отправляем содержимое буфера клиенту echo $output; // Завершаем буферизацию вывода ob_end_flush();

    Этот метод более гибкий и позволяет более тонко настраивать работу с буфером вывода. Однако, следует помнить, что обращение к буферу вывода может повлиять на производительность приложения, поэтому необходимо использовать его с осторожностью и только там, где это действительно необходимо.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно