PHPで長い時間のかかる処理(例えばデータベース間を何らかの変換をかませてデータ移行するバッチスクリプトなど)で途中経過の表示とかをしないとずっと走ってる間はダンマリなので本当にやってるのかどうか不安になる性分
かといって、var_dump()なりprint_r()は出力が冗長すぎ、節目節目にprint/echoするのもその節目間の処理が長い場合は結局不安なのは同じで、fluentdなり他のログサーバに吐き出すのもなあ・・・というときにyumとかのようにプログレスバーを出すのはどうでしょう?というお話
エスケープシーケンスを使ったりすれば自力でできないことはないんだろうけど、PHP-CLI-Progress-Barというものをありがたく使わせてもらう
例としてmysqlからデータを拾ってきて何かしらごにょごにょします、というスクリプトを(漢らしくmysqli直で使うあたりがいかにも使い捨てスクリプトっぽい) ~~
{
"guiguiboy/php-cli-progress-bar": "dev-master"
}
date_default_timezone_set('Asia/Tokyo');
require_once 'vendor/autoload.php';
$mysqli = new mysqli('localhost', '<<username>>', '<<password>>', '<<database>>');
$mysqli->set_charset('utf8');
$records = $mysqli->query('SELECT * FROM tableName');
$n = mysqli_num_rows($records);
$progressBar = new \ProgressBar\Manager(0, $n); // 0からnまでを扱うプログレスバーを作成
while ($record = $records->fetch_assoc()){
/**
* ここで何か面倒な処理をしている
*/
$progressBar->advance(); // バーの内部カウンタを1つ進める
}
$records->close();
$mysqli->close();
すると、デフォルトではこんな感じの出力に
20/20 [==================================================>] 100.00% 00:00:00
フォーマットは
処理済/全体 プログレスバー パーセンテージ 残り時間
の順番.
ドキュメントを読めば出力フォーマットを色々カスタマイズできるのでお好みで