<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Ce code est utilisé pour initialiser l'environnement,N'a rien à voir avec le contenu du texte</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">"Préparez-vous aux tests de latence du réseau...\n"</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
<hr>
<h1>Comment utiliser gettimeofday Les fonctions effectuent des tests précis du retard de réseau?</h1>
<p>Dans la programmation réseau et le réglage des performances,Mesurer la latence des demandes de réseau est une tâche cruciale。PHP Plusieurs fonctions temporelles sont fournies pour aider cette opération,dans <code>gettimeofday
Étant donné que les microsecondes sont incluses, elle peut être utilisée pour mesurer le très petit différence de temps entre deux points temporels, calculant ainsi le temps précis des opérations telles que les demandes HTTP.
Voici un exemple simple utilisant GetTimeOfday pour tester le retard d'accès à une 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">// Enregistrez l'heure de début</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">// Lancer une demande de réseau</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">// Enregistrer l'heure finale</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">// Convertir en millisecondes</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"accéder <span class="hljs-subst">$url</span></span></span><span> Le retard est:" . </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">" millisecondes\n"</span></span><span>;
?>
Le script calcule le décalage horaire avant et après la demande de réseau File_get_Contents via GetTimeOfday , et entraîne enfin un délai approximatif (en millisecondes).
GetTimeOfday est l'un des rares outils de synchronisation de haute précision en PHP, en particulier adaptés aux scénarios avec des exigences de temps strictes telles que les tests de latence du réseau ou l'évaluation des performances. Combinées à des méthodes de contrôle de contexte appropriées, des mesures de performance en millisecondes ou même en microseconde peuvent être facilement implémentées pour fournir une prise en charge des données pour l'optimisation.