2014-11-14 5 views
0

Мне нужно захватить вывод команды консоли, которую нужно отправить по электронной почте, а также по запросу. Как я могу это сделать?Получение вывода консоли в Laravel

Как получить вывод, сгенерированный из следующих вызовов $this->info()?

$r = processData(); 

$this->info("\nSubmitted data:"); 
$this->info("SubmissionId: " . $r['submission_id']); 
$this->info("Status: " . $r['status']); 
+0

ли [этот ответ] (http://stackoverflow.com/a/20111569/1903366) помочь? – lukasgeiter

+0

@ lukasgeiter К сожалению, это не потому, что мне нужно захватить определенный сегмент выходного файла консоли с помощью самой исполняющей команды. Решение предназначено для вызова команды извне и записи вывода. Не знаю, как бы я его адаптировал (я действительно пытался). – eComEvo

+0

Хорошо. Вы можете переопределить метод 'info' в своей команде (или новый базовый класс команд, если вам это нужно), а затем сохранить его там. Это будет вариант? – lukasgeiter

ответ

0

Решил просто заменить $this->info() вызовы с помощью простого эхо-команд и выходного буфера управления. Выглядит достаточно хорошо в консоли и ловит данные, запрошенные для отправки по электронной почте.

Пример:

$r = processData(); 

if ($this->option('email-results')) 
    ob_start(); 

echo "\nSubmitted data:"; 
echo "\nSubmissionId: " . $r['submission_id']; 
echo "\nStatus: " . $r['status']; 

if ($this->option('email-results')) { 
    mail(
     $this->option('email-results'), 
     'Results on ' . $start_time->toDateTimeString(), 
     ob_get_contents() 
    ); 

    ob_end_flush(); 
} 
+0

Я решил это, просто переопределив информационный метод и отслеживая локальный защищенный буфер, но все же вызывающий 'parent :: info()' для ведения журнала консоли. '$ this-> buffer. = $ data. "\ П"; Родитель :: информация ($ данных); ' – tomvo

Смежные вопросы