#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 .. новое здесь пытается выяснить, как публиковать длинный код