Kohana 3 Буферизация выходных данных командной строки? - PullRequest
5 голосов
/ 30 января 2011

Я использую Kohana 3, и у меня есть контроллер, который расширяет Kohana_Controller. Я звоню из командной строки, используя:

php /path/to//index.php --uri="url/path"

Он работает просто отлично, но этот конкретный сценарий занимает много времени, и во время выполнения я отображаю сообщения о состоянии (эхо 'сообщение о состоянии';), но ни одно из сообщений не появляется до тех пор, пока сценарий не завершится.

Я хочу видеть сообщения о состоянии, поскольку они отражены, кто-нибудь может сказать мне, как это сделать?

Спасибо

1 Ответ

8 голосов
/ 30 января 2011

Похоже, что Kohana :: init () (вероятно, вызывается в вашем загрузочном процессоре) вызывает ob_start(). Это означает, что все выходные данные после этой точки содержатся в буфере вывода. Чтобы остановить это, в вашем методе before в вашем контроллере добавьте ob_end_flush() для вывода всего, что уже могло быть выведено, и отключите буферизацию вывода. Любое эхо, которое вы делаете после этого, должно выводиться немедленно.

Итак, ваш код выглядит так:

  Controller_CLI extends Controller {
       public function before() {
              // empty the output buffre
              ob_end_flush();

              // call parent before() just incase there's anything 
              // in the parent before that you need/want to execute
              parent::before();
       }
  }
...