Динамический вывод в PHP-скрипте
Все мы знаем, что PHP - это серверный язык. И у него есть особенность вывода информации, например, с помощью echo. Эта особенность заключается в том, что функции вывода (в том числе и операторы) отправляют информацию не сразу на вывод, а сначала в выходной поток. Этот выходной поток можно представить как трубу (или буфер), в которой накапливается выходная информация. Все echo, print и прочие выходные функции и операторы отправляют данные в эту самую трубу. И только после окончания работы скрипта всё содержимое этой трубы перемещается в браузер. Однако, иногда необходимо динамически выводить данные в PHP-скрипте, то есть видеть определённый результат прямо в процессе работы.
Давайте для начала разберём такой пример:
<?php
for ($i = 0; $i < 5; $i++) {
echo $i;
sleep(1);
}
?>
Если запустить данные скрипт, то примерно в течение 5-ти секунд ничего происходить не будет, а затем мгновенно появятся все 5 цифр. Это как раз наглядное доказательство существования выходного потока. Сначала в выходной поток помещаются все данные через echo, а после выполнения скрипта, содержимое выходного потока мгновенно выбрасывается в браузер.
Теперь давайте всё-таки разберём, как динамически выводить данные в PHP-скрипте. Делается это с помощью специальной функции flush(), которая позволяет высвободить выходной поток ещё до завершения скрипта. Перепишем предыдущий пример:
<?php
for ($i = 0; $i < 5; $i++) {
echo $i;
flush();
sleep(1);
}
?>
В результате каждую секунду Вы будете видеть появление одной цифры.
Где можно использовать функцию flush()? В основном, это очень долгие скрипты. Допустим, Вы сделали какой-нибудь парсер сайта. Если сайт большой, то парсер будет работать очень долго, и чтобы видеть, что он элементарно не зациклился и вообще ешё работает, можно выводить адрес последней считанной страницы. Это всего лишь как пример, и таких примеров у функции flush() великое множество.
-
- Михаил Русаков
Комментарии (27):
Михаил, у вас после каждой статьи есть блок где можно скопировать кнопку ссылку (или вставить в подпись) на ваш сайт. Вот у вас там ошибка. В ССЫЛКЕ. У вас закрывающий тег "</a>" написан вот так "/a>"
Ответить
Спасибо, исправил!
Ответить
Михаил,а Вы не знаете как зделать например конвертирование MP3 файла в меншое качество.Спасибо
Ответить
В PHP никак, потребуется вызывать внешнюю программу.
Ответить
Извините Михаил,а как ее можно вызвать бо я хочу сделать такое конвертирование файлов как на сайте waprik.ru.Спасибо заранее
Ответить
Вызывается через функцию exec(). А уж саму программу придётся найти, я не искал таких.
Ответить
Михаил,а как именно можите мне дать код
Ответить
http://php.net/manual/ru/function.exec.php А что за параметры, зависит от приложения.
Ответить
И еще одно Михаил,а можите мне продать Ваш курс за 1200 рублей.
Ответить
Все цены указаны здесь: http://srs.myrusakov.ru/list.php И они одинаковы для всех.
Ответить
Михаил,а Вы умеете пользоваться етой функцией????
Ответить
Чего ей пользоваться-то? Обычная функция.
Ответить
Михаил,я скачал редактор Tiny MCE но не знаю каксделать так чтобы при нажатии кнопки сохранить данные сохранялись в моей базе,а затем выводились
Ответить
А вот для этого нужны уже глубокие знания по PHP и MySQL. Вот этому обучает курс: http://srs.myrusakov.ru/php
Ответить
А какой курс лутшый php и MySQL с нуля до гуру,или создание сайта от а до я
Ответить
Михаил,а меня интересует такой вопрос как из своего компютера создать свой сервер
Ответить
http://myrusakov.ru/php-make-server.html
Ответить
По PHP и MySQL однозначно лучше PHP и MySQL с Нуля до Гуру.
Ответить
Михаил,а сколько Вы учились делать сайты и кто Вас учил???
Ответить
Я до сих пор учусь, это вечный процесс, учусь сам.
Ответить
Здравствуйте! А как сделать динамические страницы php mysql? Чтобы каждая запись в БД выводилась в виде отдельной страницы типа example.com/id=55 (или что то похожее)
Ответить
Берёте id из массива $_GET в PHP, далее получаете запись с этим id и выводите в том формате, который требуется уже на странице.
Ответить
Примерно знаю как это делать, но есть ли более подробный урок. В интернете обшарил, но ничего подходящего не нашел. Могли бы вы написать, как написали отличный урок про js редактор. Тем более для вас это не составит труда, а вот для таких чайников как я (нас больше!) это просто головоломка.
Ответить
http://srs.myrusakov.ru/freephp - здесь создаётся нечто подобное, только более сложное.
Ответить
У вас ошибка тут "то есть видеть определённый результат прямо в процесс работы."
Ответить
Спасибо, исправил!
Ответить
Михаил добрый вечер. Подскажите, почему flush() может не работать? У меня например ваш код не работает. Сервер находится на reg.ru
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.