2014-11-14 135 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 2014-11-14 18:20:00

+0

@lukasgeiter不幸的是,它並不是因爲我需要從執行命令本身捕獲控制檯輸出的特定段。解決方案是從外部調用命令並捕獲輸出。不知道我會如何適應它(我嘗試過)。 – eComEvo 2014-11-14 18:25:39

+0

好的。你可以在你的命令中覆蓋'info'方法(或者如果你經常需要一個新的命令基類),然後將它保存在那裏。這是一個選擇嗎? – lukasgeiter 2014-11-14 18:30:47

回答

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。 「\ n」;父::信息($的數據);' – tomvo 2015-02-19 09:17:40