Отображать переменную php в режиме реального времени

#php

#php

Вопрос:

У меня есть php-код, который считывает текстовый файл с адресами электронной почты и отправляет каждое электронное письмо с помощью цикла. Как я могу отображать в режиме реального времени статус каждого электронного письма, отправленного из цикла? В настоящее время я могу записывать только в файл журнала, доступ к которому возможен только после завершения выполнения php-кода.

Комментарии:

1. Где вы хотите увидеть результат? Использование tail -f в файле журнала, в консоли или в браузере?

2. Я предполагаю, что это скрипт PHP CLI, а не то, что вы запускаете из браузера. Это правильно?

3. когда я нажимаю кнопку «отправить», страница формы просто остается там до тех пор, пока все отправленные электронные письма … после этого отображаются мои операторы echo

4. да, это php-скрипт с HTML-формой

5. Мне нужно, чтобы вывод отображался либо в текущем окне, либо в новом окне.

Ответ №1:

Очистите вывод, если вы хотите отправить эхо в браузер.

 http://php.net/manual/en/function.flush.php
  

Очищает системные буферы записи PHP и любой другой серверной части, используемой PHP (CGI, веб-сервер и т. Д.). Это попытка передать текущий вывод полностью в браузер с несколькими оговорками.

 <?php
  for ($i=0; $i<10;$i  ){
      echo $i."<br>";
      flush();
      ob_flush();
      sleep(1);
   }
  

Комментарии:

1. метод flush / sleep не работает. скрипт все еще ожидает завершения выполнения перед отображением anything…is javascript / ajax — единственное решение??

2. Попробуйте ob_flush(), у вас может быть неявная буферизация.

3. @rubin отредактировал код, попробуйте его с ob_flush сейчас

4. извините, задержка 4 .. попробовал .. ob_flush() не работает .. все эхо-сигналы отображаются после отправки всех электронных писем, т.Е. Когда скрипт завершает выполнение. итак, если я отправляю 1000 электронных писем, страница формы просто сидит там, ожидая завершения скрипта.

5. @M.Alnashm .. новое здесь пытается выяснить, как публиковать длинный код