Полный цикл в digital

Системный буфер

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

Давайте рассмотрим реализацию. Вызвав функцию flush(), даем указание PHP сбросить системный буфер, отправив всё что там есть в браузер пользователю. Если ранее стартовал пользовательский буфер, для начала надо будет сбросить пользовательский буфер, а потом вызвать flush():

// выводим информацию
echo "<h3>Пожалуйста, подождите 10 секунд...</h3>";
// цикл на 10 итераций
for ($i = 1; $i <= 10; $i++) {
    // выводим число, вывод попадает в системный буфер
    echo $i;
    // отправляем буфер пользователю в браузер
    flush();
    // ждём секунду между итерацией
    sleep(1);
}
// выводим информацию
echo "<h3>Thx!</h3>";

Особенность о которой нужно помнить, директива implicit_flush, отвечает за то, чтобы после каждого вывода автоматически вызывалась функция flush(), поэтому следующая комбинация сработает аналогично предыдущему примеру:

.htaccessphp_flag implicit_flush on
for ($i = 1; $i <= 10; $i++) {
    echo $i;
    sleep(1);
}

Директиву implicit_flush можно изменять на лету, для этого достаточно вызвать функцию ob_implicit_flush(), данная функция не имеет к пользовательскому буферу вывода отношения:

// включаем директиву implicit_flush
ob_implicit_flush();
// цикл на 10 итераций
for ($i = 1; $i <= 10; $i++) {
    // после echo будет автамотически вызвана функция flush()
    echo $i;
    // ждём секунду между итерацией
    sleep(1);
}

Данный пример работает только при выключенной директиве output_buffering, иначе нужно будет его принудительно выключить и очистить в самом скрипте. Если же вы работаете в CLI, то знайте implicit_flush всегда включён, а output_buffering выключен, следовательно весь вывод будет без промедления попадать в консоль.

Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!
Эйч Маркетинг