<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Dieser Code wird verwendet, um die Umgebung zu initialisieren,Hat nichts mit dem Inhalt des Textes zu tun</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">"Bereiten Sie sich auf Netzwerklatenztests vor...\n"</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
<hr>
<h1>Wie man benutzt gettimeofday Funktionen führen genaue Tests der Netzwerkverzögerung durch?</h1>
<p>In Netzwerkprogrammierung und Leistungsstimmung,Die Messung der Latenz von Netzwerkanfragen ist eine entscheidende Aufgabe。PHP Es werden mehrere Zeitfunktionen bereitgestellt, um diesen Vorgang zu unterstützen,In <code>gettimeofday
Da die Mikrosekunden enthalten sind, kann sie verwendet werden, um den sehr geringen Zeitunterschied zwischen zwei Zeitpunkten zu messen, wodurch die genaue zeitaufwändige Operationen wie HTTP-Anforderungen berechnet werden.
Hier finden Sie ein einfaches Beispiel, um GetTimeofday zu verwenden, um die Verzögerung des Zugriffs auf eine URL zu testen:
<?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">// Notieren Sie die Startzeit</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">// Eine Netzwerkanforderung einleiten</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">// Notieren Sie die Endzeit</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">// In Millisekunden konvertieren</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Zugang <span class="hljs-subst">$url</span></span></span><span> Die Verzögerung ist:" . </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">" Millisekunde\n"</span></span><span>;
?>
Das Skript berechnet den Zeitunterschied vor und nach der Netzwerkanforderung von Datei_Get_Contents über GetTimeOfday und führt schließlich zu einer ungefähren Verzögerungszeit (in Millisekunden).
GetTimeOfday ist eines der wenigen hochpräzisen Timing-Tools in PHP, insbesondere für Szenarien mit strengen Zeitanforderungen wie Netzwerklatenz-Tests oder Leistungsbewertung. In Kombination mit geeigneten Kontextsteuerungsmethoden können Millisekunden- oder sogar Mikrosekundenleistung Messungen einfach implementiert werden, um die Datenunterstützung für die Optimierung bereitzustellen.