PHPでバッチ操作を実行する場合、通常、処理プロセス中にユーザーに進捗状況を示す必要性が発生します。 Time_nanos Sleep機能を使用して、高精度の睡眠制御を実現し、それによりバッチ処理中の進行状況バーの更新効果をシミュレートします。この記事では、 Time_nanos Sleepの使用方法とシンプルなコマンドラインの進行状況バーを組み合わせて、進行状況プロンプトを使用してバッチ処理操作を実装します。
Time_nanos Sleepは、プログラムの実行を一時停止するためにPHPで使用される機能です。これにより、プログラムは次の形式の形式で、2番目とナノ秒レベルで時間を一時停止できます。
bool time_nanosleep(int $seconds, int $nanoseconds);
$秒:整数秒
$ nanoseconds :ナノ秒、1秒= 10億ナノ秒
睡眠やUSELEEPと比較して、 Time_Nanos Sleepはより高い精密時間制御を提供します。これは、細粒の待機が必要なシナリオに適しています。
100などの処理手順の総数を設定します。
タスクの各部分が処理された後、更新プログレスバーディスプレイが表示されます。
各ステップの処理時間は、簡単なデモンストレーションのためにTime_nanos Sleepを通じてシミュレートされます。
次のコードは、 Time_nanos Sleepを使用してコマンドラインの進行状況バーを実装する方法を示しています。
<?php
$totalSteps = 50; // ステップの総数
$barWidth = 40; // 進行中のバー幅
echo "バッチ操作を開始します...\n";
for ($i = 1; $i <= $totalSteps; $i++) {
// タスク処理時間をシミュレートします,寝る50ミリ秒
time_nanosleep(0, 50 * 1000000);
// 進捗率を計算します
$progress = $i / $totalSteps;
$filledLength = round($barWidth * $progress);
// プログレスバー文字列を構築します
$bar = str_repeat("=", $filledLength) . str_repeat(" ", $barWidth - $filledLength);
// 出力の進行状況バーとパーセンテージ,使用 "\r" ラインの最初に戻ります,動的更新を実装します
printf("\r[%s] %.2f%%", $bar, $progress * 100);
flush();
}
echo "\nバッチ操作が完了しました!\n";
Time_nanos Sleep(0、50 * 1000000)を使用して、プログラムを50ミリ秒間一時停止し、ステップあたりの処理時間をシミュレートします。
\ rを使用して文字を制御してラインの先頭に戻り、進行状況バーの動的な更新を実現します。
PRINTF出力は、フォーマットされた進行状況バーとパーセンテージです。
flush()は、出力が時間内に表示されることを保証します。
バッチタスクが実際の操作である場合、睡眠は特定のタスク実行ロジックに置き換えることができます。
出力ログまたはエラーメッセージと組み合わせて、デバッグと監視をより助長します。
$ bardと睡眠時間を調整して、進行状況バーのディスプレイ効果と更新速度を制御できます。
Time_nanos Sleepに関するより多くの公式ドキュメントを見ることができます:
https://gitbox.net/manual/en/function.time-nanosleep.php