現在の位置: ホーム> 最新記事一覧> Time_nanos Sleepを使用して、進行状況バーを使用してバッチ処理を実装します

Time_nanos Sleepを使用して、進行状況バーを使用してバッチ処理を実装します

gitbox 2025-05-29

PHPでバッチ操作を実行する場合、通常、処理プロセス中にユーザーに進捗状況を示す必要性が発生します。 Time_nanos Sleep機能を使用して、高精度の睡眠制御を実現し、それによりバッチ処理中の進行状況バーの更新効果をシミュレートします。この記事では、 Time_nanos Sleepの使用方法とシンプルなコマンドラインの進行状況バーを組み合わせて、進行状況プロンプトを使用してバッチ処理操作を実装します。


1。Time_nanos Sleepの紹介

Time_nanos Sleepは、プログラムの実行を一時停止するためにPHPで使用される機能です。これにより、プログラムは次の形式の形式で、2番目とナノ秒レベルで時間を一時停止できます。

 bool time_nanosleep(int $seconds, int $nanoseconds);
  • $秒:整数秒

  • $ nanoseconds :ナノ秒、1秒= 10億ナノ秒

睡眠USELEEPと比較して、 Time_Nanos Sleepはより高い精密時間制御を提供します。これは、細粒の待機が必要なシナリオに適しています。

2。進捗バーを実装するためのアイデア

  1. 100などの処理手順の総数を設定します。

  2. タスクの各部分が処理された後、更新プログレスバーディスプレイが表示されます。

  3. 各ステップの処理時間は、簡単なデモンストレーションのためにTime_nanos Sleepを通じてシミュレートされます。

3。サンプルコード

次のコードは、 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()は、出力が時間内に表示されることを保証します。

4。思考を拡張します

  • バッチタスクが実際の操作である場合、睡眠は特定のタスク実行ロジックに置き換えることができます。

  • 出力ログまたはエラーメッセージと組み合わせて、デバッグと監視をより助長します。

  • $ bardと睡眠時間を調整して、進行状況バーのディスプレイ効果と更新速度を制御できます。

5。リファレンスリソース

Time_nanos Sleepに関するより多くの公式ドキュメントを見ることができます:

 https://gitbox.net/manual/en/function.time-nanosleep.php