PHP
CMS
laravel
laravel5
OctoberCMS

OctoberCMSプラグイン作成Tips:LinuxコマンドのSTDOUTをリアルタイムで取得する

More than 1 year has passed since last update.

OctoberCMSのコマンドからLinuxコマンドを使っていると、処理時間が長いときなど、リアルタイムでLinuxコマンドの出力をコンソールに表示したいことがあります。

OctoberCMSプラグイン作成Tips:Linuxコマンドを実行する」で使っていた Process#getOutput メソッドだと、処理が終わった後にSTDOUTの出力を取得することになります。

そこで Process#run メソッドに関数を渡してやることで、(ほぼ)コマンド出力のたびに呼び出されたびに任意の処理をさせることができます。
下記の例だと、OctoberCMSのコマンド実装クラスでLinuxコマンドのSTDOUT出力をそのままコンソールに出力しています。

$process->run(function ($type, $buf) {
    $this->output->write($buf);
});

参考:Getting real-time Process Output