L'optimisation des performances est un aspect important en PHP, en particulier dans les scénarios où de grandes quantités de données sont traitées ou des fichiers doivent être fréquemment manipulés. En mesurant avec précision le temps d'exécution du code, nous pouvons identifier les goulots d'étranglement et les optimiser. PHP fournit la fonction getTimeOfday () , qui peut être utilisée pour obtenir l'horodatage actuel et coopérer avec lui pour mesurer l'heure des opérations de fichiers, ce qui peut nous aider à comprendre plus précisément le temps requis pour la lecture des fichiers.
GetTimeOfday () est une fonction intégrée PHP très utile qui renvoie l'horodatage actuel et contient des secondes et des microsecondes. La valeur de retour est un tableau associatif contenant deux paires de valeurs clés:
SEC : La deuxième partie, représentant le nombre de secondes depuis l'ère Unix (1er janvier 1970).
USEC : partie microseconde, représentant la petite partie des secondes, allant de 0 à 999999.
En obtenant ces deux parties, nous pouvons mesurer avec précision l'heure d'exécution du programme, en particulier lorsque vous traitez des lectures de fichiers et d'autres opérations qui nécessitent une précision.
Avant de commencer la lecture du fichier, nous pouvons appeler getTimeOfday () pour obtenir l'horodatage actuel et enregistrer l'heure avant la lecture du fichier.
<span><span><span class="hljs-variable">$startTime</span></span><span> = </span><span><span class="hljs-title function_ invoke__">gettimeofday</span></span><span>(</span><span><span class="hljs-literal">true</span></span><span>);
</span></span>Le véritable paramètre signifie renvoyer un horodat flottant (c'est-à-dire une valeur décimale des secondes et des microsecondes synthèse), afin que nous puissions enregistrer plus précisément le temps.
Ensuite, nous effectuons des opérations de lecture de fichiers. Supposons que nous lisons un grand fichier, le code est le suivant:
<span><span><span class="hljs-variable">$filePath</span></span><span> = </span><span><span class="hljs-string">'large_file.txt'</span></span><span>;
</span><span><span class="hljs-variable">$fileContent</span></span><span> = </span><span><span class="hljs-title function_ invoke__">file_get_contents</span></span><span>(</span><span><span class="hljs-variable">$filePath</span></span><span>);
</span></span>Ici, nous utilisons File_get_Contents () pour lire l'intégralité du fichier. Cette méthode chargera le contenu de fichier entier en mémoire. Si le fichier est particulièrement important, le temps de lecture peut être plus long. Vous pouvez également utiliser d'autres méthodes de lecture de fichiers au besoin, telles que la lecture ligne par ligne, etc.
Une fois la lecture du fichier terminée, nous appelons à nouveau getTimeOfday () pour obtenir l'heure actuelle, afin que nous puissions obtenir le temps nécessaire pour lire le fichier.
<span><span><span class="hljs-variable">$endTime</span></span><span> = </span><span><span class="hljs-title function_ invoke__">gettimeofday</span></span><span>(</span><span><span class="hljs-literal">true</span></span><span>);
</span></span>Une fois la lecture du fichier terminée, la différence entre l'heure de début et l'heure de fin est calculée, c'est-à-dire le temps nécessaire pour la lecture du fichier.
<span><span><span class="hljs-variable">$timeSpent</span></span><span> = </span><span><span class="hljs-variable">$endTime</span></span><span> - </span><span><span class="hljs-variable">$startTime</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Lecture de fichiers qui prend un temps: "</span></span><span> . </span><span><span class="hljs-variable">$timeSpent</span></span><span> . </span><span><span class="hljs-string">"Deuxième"</span></span><span>;
</span></span>Cela publiera la consommation temporelle de l'opération de lecture du fichier en secondes et conservera la partie microseconde flottante.
Combinez les étapes ci-dessus dans un programme PHP complet:
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Obtenez l'heure de début</span></span><span>
</span><span><span class="hljs-variable">$startTime</span></span><span> = </span><span><span class="hljs-title function_ invoke__">gettimeofday</span></span><span>(</span><span><span class="hljs-literal">true</span></span><span>);
</span><span><span class="hljs-comment">// Effectuer des opérations de lecture de fichiers</span></span><span>
</span><span><span class="hljs-variable">$filePath</span></span><span> = </span><span><span class="hljs-string">'large_file.txt'</span></span><span>;
</span><span><span class="hljs-variable">$fileContent</span></span><span> = </span><span><span class="hljs-title function_ invoke__">file_get_contents</span></span><span>(</span><span><span class="hljs-variable">$filePath</span></span><span>);
</span><span><span class="hljs-comment">// Obtenez l'heure de fin</span></span><span>
</span><span><span class="hljs-variable">$endTime</span></span><span> = </span><span><span class="hljs-title function_ invoke__">gettimeofday</span></span><span>(</span><span><span class="hljs-literal">true</span></span><span>);
</span><span><span class="hljs-comment">// Calculer le temps de lecture du fichier</span></span><span>
</span><span><span class="hljs-variable">$timeSpent</span></span><span> = </span><span><span class="hljs-variable">$endTime</span></span><span> - </span><span><span class="hljs-variable">$startTime</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Lecture de fichiers qui prend un temps: "</span></span><span> . </span><span><span class="hljs-variable">$timeSpent</span></span><span> . </span><span><span class="hljs-string">"Deuxième\n"</span></span><span>;
</span></span> <span><span><span class="hljs-section">Lecture de fichiers qui prend un temps: 0.023456Deuxième</span></span><span>
</span></span>De cette façon, vous pouvez mesurer le temps nécessaire pour lire un fichier très précisément, et même observer les différences de temps aux niveaux de microsecondes, vous aidant à faire des optimisations de performances plus efficaces.
Bien que GetTimeOfday () puisse mesurer avec précision le temps, lors de l'optimisation de la lecture du fichier, vous devez faire attention aux aspects suivants:
Mécanisme de mise en cache : lors de la lecture du même fichier plusieurs fois, vous pouvez envisager d'utiliser Cache pour éviter les opérations d'E / S de disque inutiles.
Lecture asynchrone : Pour les fichiers très grands, la lecture asynchrone peut être utilisée pour éviter de bloquer le processus principal.
Fichier Fichier : si le fichier est très grand, vous pouvez envisager de diviser le fichier en petits morceaux et de le lire progressivement pour réduire l'utilisation de la mémoire.
En combinant ces méthodes avec une mesure de temps précise, les performances de la lecture de fichiers peuvent être efficacement améliorées.
Grâce à la fonction GetTimeOfday () de PHP, nous pouvons mesurer avec précision l'heure de la lecture des fichiers et effectuer une optimisation des performances correspondante en fonction des données mesurées. Que ce soit au stade de débogage ou dans un environnement de production, il est très important de comprendre le temps d'exécution d'un programme, qui peut nous aider à identifier les goulots d'étranglement de performance et à les améliorer.