OctoberCMSのコマンドからLinuxコマンドを使っていると、処理時間が長いときなど、リアルタイムでLinuxコマンドの出力をコンソールに表示したいことがあります。
「OctoberCMSプラグイン作成Tips:Linuxコマンドを実行する」で使っていた Process#getOutput
メソッドだと、処理が終わった後にSTDOUTの出力を取得することになります。
そこで Process#run
メソッドに関数を渡してやることで、(ほぼ)コマンド出力のたびに呼び出されたびに任意の処理をさせることができます。
下記の例だと、OctoberCMSのコマンド実装クラスでLinuxコマンドのSTDOUT出力をそのままコンソールに出力しています。
$process->run(function ($type, $buf) {
$this->output->write($buf);
});