<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// このコードは、環境の初期化に使用されます,テキストの内容とは何の関係もありません</span></span><span>
</span><span><span class="hljs-title function_ invoke__">date_default_timezone_set</span></span><span>(</span><span><span class="hljs-string">'UTC'</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ネットワークレイテンシテストの準備...\n"</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
<hr>
<h1>使い方 gettimeofday 関数は、ネットワーク遅延の正確なテストを実行します?</h1>
<p>ネットワークプログラミングとパフォーマンスチューニングで,ネットワークリクエストの遅延を測定することは重要なタスクです。PHP この操作を支援するために、複数の時間関数が提供されます,で <code>gettimeofday
マイクロ秒が含まれているため、2つの時点間の非常に小さな時間差を測定するために使用でき、それによりHTTP要求などの操作の正確な時間延長を計算できます。
GetTimeOfdayを使用してURLへのアクセスの遅延をテストする簡単な例を次に示します。
<?php
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">get_microtime</span></span><span>(</span><span><span class="hljs-params"></span></span><span>) {
</span><span><span class="hljs-variable">$t</span></span><span> = </span><span><span class="hljs-title function_ invoke__">gettimeofday</span></span><span>();
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$t</span></span><span>[</span><span><span class="hljs-string">'sec'</span></span><span>] + </span><span><span class="hljs-variable">$t</span></span><span>[</span><span><span class="hljs-string">'usec'</span></span><span>] / </span><span><span class="hljs-number">1e6</span></span><span>;
}
</span><span><span class="hljs-variable">$url</span></span><span> = </span><span><span class="hljs-string">"https://www.example.com"</span></span><span>;
</span><span><span class="hljs-comment">// 開始時間を記録します</span></span><span>
</span><span><span class="hljs-variable">$start</span></span><span> = </span><span><span class="hljs-title function_ invoke__">get_microtime</span></span><span>();
</span><span><span class="hljs-comment">// ネットワークリクエストを開始します</span></span><span>
</span><span><span class="hljs-variable">$opts</span></span><span> = </span><span><span class="hljs-keyword">array</span></span><span>(
</span><span><span class="hljs-string">"http"</span></span><span> => </span><span><span class="hljs-keyword">array</span></span><span>(
</span><span><span class="hljs-string">"method"</span></span><span> => </span><span><span class="hljs-string">"GET"</span></span><span>,
</span><span><span class="hljs-string">"timeout"</span></span><span> => </span><span><span class="hljs-number">10</span></span><span>
)
);
</span><span><span class="hljs-variable">$context</span></span><span> = </span><span><span class="hljs-title function_ invoke__">stream_context_create</span></span><span>(</span><span><span class="hljs-variable">$opts</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">file_get_contents</span></span><span>(</span><span><span class="hljs-variable">$url</span></span><span>, </span><span><span class="hljs-literal">false</span></span><span>, </span><span><span class="hljs-variable">$context</span></span><span>);
</span><span><span class="hljs-comment">// 終了時間を記録します</span></span><span>
</span><span><span class="hljs-variable">$end</span></span><span> = </span><span><span class="hljs-title function_ invoke__">get_microtime</span></span><span>();
</span><span><span class="hljs-variable">$latency</span></span><span> = (</span><span><span class="hljs-variable">$end</span></span><span> - </span><span><span class="hljs-variable">$start</span></span><span>) * </span><span><span class="hljs-number">1000</span></span><span>; </span><span><span class="hljs-comment">// ミリ秒に変換します</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"アクセス <span class="hljs-subst">$url</span></span></span><span> 遅延はです:" . </span><span><span class="hljs-title function_ invoke__">round</span></span><span>(</span><span><span class="hljs-variable">$latency</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>) . </span><span><span class="hljs-string">" ミリ秒\n"</span></span><span>;
?>
スクリプトは、 File_Get_Contentsネットワーク要求の前後の時間差をGetTimeOfdayを通じて計算し、最後に近似遅延時間(ミリ秒単位)になります。
GetTimeOfdayは、PHPの数少ない高精度タイミングツールの1つであり、特にネットワークレイテンシテストやパフォーマンス評価などの厳格な時間要件を持つシナリオに適しています。適切なコンテキスト制御メソッドと組み合わせることで、ミリ秒またはマイクロ秒のパフォーマンス測定を簡単に実装して、最適化のデータサポートを提供できます。