我正在編寫主要用作控制檯應用程序的yii2應用程序。我有從服務器獲取一些數據的組件或(微)服務,處理它們並將我需要的信息保存到db。當然,有幾個用於循環,在這些循環中,我使用yii\helpers\Console::updateProgress
或僅使用echo
來輸出當前進度,以觀察進度和測試輸出(如,以xxx產品開頭)。在某些事件中,我使用Yii::info()
或Yii::error()
等記錄重要信息。通常是一個cron處理任務,如pullProductUpdates
或其他東西,我。控制檯和Web應用程序的輸出進度
但是在某些情況下,我需要在我的web應用程序中使用該方法(即pullProductUpdates
)。但是,不能有任何echo
命令活動或Console::updateProgress
命令。
當然,我沒有來自Yii的日誌記錄方法的問題,因爲我配置了日誌目標,並且它們不會回顯某些內容。但我不知道如何處理echo
命令...
一種方法是檢查是否設置了$_SERER['REMOTE_ADDR']
設置與否。在控制檯,它將評估爲null
,所以我可以繞if {} else {}
。一種可能更好的解決方法是編寫log()
或progress()
方法。特質可能有用嗎?
那麼我應該如何設計一個解決方案?這是否有任何模式?我的服務應該實現像loggable
或proressable
這樣的界面嗎?或者使用Logger/Progress對象並使用某種DI(依賴注入)?因爲我不想寫這些log()
或progress()
方法的功能不止一次。此外,我不能在web應用程序中使用進度功能。一個原因是我不知道如何去(如果它可能與PHP在這裏),但這將是另一個問題。
在此先感謝。