Time_nanos Sleepは、PHPの組み込み機能であり、現在のプロセスが指定された秒数とNanocondsで睡眠をとることができます。その関数の署名は次のとおりです。
bool time_nanosleep(int $seconds, int $nanoseconds)
$秒:整数秒、睡眠時間の2番目の部分。
$ nanoseconds :nanoconds、0から999,999,999の範囲。
従来の睡眠機能と比較して、第2レベルの遅延のみを実装でき、 Time_nanos Sleepはナノ秒レベルの遅延をサポートし、より正確な時間制御を達成します。
多数のファイルを処理して、過度のI/Oの圧力が高すぎるのを防ぎ、ネットワークサービスの周波数制限を防ぐために、正確な期間(500ミリ秒など)を一時停止するとします。 Time_nanos Sleepはこの要件を満たすことができます。
次の例は、フォルダーを通過するときにファイルを処理した後、 Time_nanos Sleepを使用して500ミリ秒を一時停止する方法を示しています。
<?php
$directory = '/path/to/your/files';
// ディレクトリハンドルを開きます
if ($handle = opendir($directory)) {
while (false !== ($file = readdir($handle))) {
// 特別ディレクトリを無視します
if ($file === '.' || $file === '..') {
continue;
}
$filePath = $directory . DIRECTORY_SEPARATOR . $file;
// ファイル処理操作はここで実行されます
echo "Processing file: $filePath\n";
// ファイル処理時間をシミュレートします
// file_get_contents, file_put_contents, またはその他の操作
// 寝る500ミリ秒,処理を速く防ぎます
$seconds = 0;
$nanoseconds = 500 * 1000000; // 500ミリ秒 = 500,000,000ナノ秒
time_nanosleep($seconds, $nanoseconds);
}
closedir($handle);
}
?>
指定されたディレクトリ内のすべてのファイルを繰り返します。
各ファイルを処理した後、 Time_nanos Sleep(0、500000000)を通じて500msの一時停止が達成されます。
これにより、処理リズムが均等になり、多くのファイル操作によって引き起こされるパフォーマンスボトルネックを即座に回避できます。
Time_nanos Sleepの精度に対するサポートは、オペレーティングシステムとPHP環境に依存し、実際の睡眠時間はわずかに偏っている可能性がありますが、通常、ほとんどの正確な制御ニーズを満たすことができます。
ナノ秒パラメーター範囲は0-999,99,999,999に制限されており、範囲外の場合は警告が発生します。
睡眠を中断する必要がある場合は、 time_sleep_untilまたは信号処理メカニズムを使用して実装できます。
Batch Calling APIなどのシナリオでは、 Time_NanoS Sleepを使用して要求頻度を制御して、要求が過度に速く制限されないようにすることもできます。例えば:
<?php
$urls = [
'https://gitbox.net/api/data1',
'https://gitbox.net/api/data2',
'https://gitbox.net/api/data3',
];
foreach ($urls as $url) {
// リクエストを送信します(回路図)
echo "Fetching data from: $url\n";
// 例えば file_get_contents($url) または curl 聞く
// 寝る200ミリ秒,防止聞く过快
time_nanosleep(0, 200 * 1000000);
}
?>
Time_nanos Sleep機能は、PHPの非常に便利なツールであり、細かい時間制御が必要なシナリオに適しています。それを通して、ファイル処理やAPI呼び出しなどのタスクの正確なリズム制御、プログラムの安定性とシステムの負荷分散の改善を実現できます。この関数を合理的に使用すると、PHPプログラムがよりスムーズに実行され、操作が速すぎることによってもたらされる潜在的なリスクを回避できます。