Есть ли способ заставить PHP постепенно выводиться по мере выполнения скрипта?


Итак, я пишу одноразовый сценарий для своего личного одноразового использования, и я хочу видеть, как идет процесс. В основном я обрабатываю пару тысяч пресс-релизов и отправляю их на нашу новую CMS.

Поэтому я не забиваю CMS, я делаю скрипт sleep в течение пары секунд после каждых 5 запросов.

Я хотел бы - по мере выполнения сценария - видеть, как мои echo сообщают мне, что сценарий переходит в спящий режим или что последняя транзакция с веб-сервис прошел успешно.

Возможно ли это в PHP?

Спасибо за вашу помощь!

Иэн

Author: Iain Fraser, 2010-03-25

4 answers

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

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

По умолчанию PHP никогда не будет воспроизводить что-либо, пока весь скрипт не завершит выполнение. Это просто ваш браузер пытается вывести слишком много данных в один раз, или у вас есть что-то, что заставляет его где-то смываться.

 10
Author: animuson, 2010-03-25 04:48:38

Вы можете попробовать использовать сброс и посмотреть на другие функции управления выводом , но они могут оказаться бесполезными. Программное обеспечение вашего веб-сервера может буферизировать ответ независимо от этого.

 1
Author: Charles, 2010-03-25 04:50:12

Вот пакет PHP, который завершает его:

Https://packagist.org/packages/coderofsalvation/browser-stream

   BrowserStream::enable();
    BrowserStream::put("loading");

    for( $i = 0; $i < 10; $i++ ){
        BrowserStream::put(".");
        sleep(1);
    }
 1
Author: coderofsalvation, 2016-11-10 14:12:43

Возможно, вам захочется изучить команды очистки http://php.net/manual/en/function .flush.php

 0
Author: Steve Robillard, 2010-03-25 04:46:26