Dans PHP, le test des performances des appels système est essentiel pour optimiser le code et comprendre l'efficacité de l'exécution du programme. Deux méthodes couramment utilisées consistent à utiliser la fonction getTimeOfday () pour obtenir l'horodatage actuel et la fonction exec () pour exécuter des commandes externes. Dans cet article, nous explorerons comment combiner ces deux fonctions pour tester les performances des appels système.
GetTimeOfday () est une fonction qui peut renvoyer l'heure actuelle, avec une haute précision, généralement en microsecondes. Sa fonction est d'obtenir l'horodatage actuel du système, qui peut être utilisé pour effectuer des tests de performances et enregistrer la différence de temps.
$time = gettimeofday();
echo "Heure actuelle:" . $time['sec'] . "Deuxième " . $time['usec'] . "微Deuxième";
Cette fonction renvoie un tableau associatif contenant le nombre de secondes ( sec ) et le nombre de microsecondes ( USEC ). Dans les tests de performances, nous enregistrons généralement le décalage horaire avant et après le début de la fonction, obtenant ainsi le temps d'exécution.
exec () est une fonction utilisée dans PHP pour exécuter des programmes ou des commandes externes. Il peut exécuter des commandes shell et renvoyer le résultat d'exécution.
$output = [];
$return_var = 0;
exec('ls -al', $output, $return_var);
print_r($output);
La fonction exec () accepte trois paramètres:
Commande : la commande à exécuter.
Sortie : le résultat de sortie après l'exécution de la commande sera renvoyé sous forme de tableau.
return_var : le code d'état de retour après l'exécution de la commande.
Nous pouvons tester les performances des appels système en combinant GetTimeOfday () et Exec () , en particulier le temps nécessaire pour exécuter des commandes externes. Voici les étapes spécifiques:
Enregistrez l'heure avant le début de la fonction : utilisez getTimeOfday () pour obtenir l'heure actuelle.
Exécuter des commandes externes : utilisez Exec () pour exécuter des commandes qui doivent être testées.
Enregistrez l'heure après la fin de la fonction : appelez à nouveau GetTimeOfday () pour obtenir l'heure de fin.
Calculez le décalage horaire : calcule la différence de temps utilisée pour l'exécution de la commande par horodapage.
// Enregistrez l'heure de début
$start_time = gettimeofday();
// Exécuter des commandes externes
$command = 'ls -al';
$output = [];
$return_var = 0;
exec($command, $output, $return_var);
// Enregistrer l'heure finale
$end_time = gettimeofday();
// Calculez le décalage horaire d'exécution
$elapsed_time = ($end_time['sec'] - $start_time['sec']) + ($end_time['usec'] - $start_time['usec']) / 1000000;
echo "mettre en œuvre '$command' Le temps passé est: " . $elapsed_time . " Deuxième\n";
GetTimeOfday () Renvoie les secondes et les parties microsecondes de l'heure actuelle.
Lors de l'exécution de la commande exec () , nous ne nous soucions pas du contenu de sortie de la commande, mais nous ne nous soucions que du moment de l'exécution de la commande.
Enfin, en calculant la différence entre les temps de début et de fin, le temps nécessaire pour exécuter la commande est obtenu.
Dans les applications pratiques, les tests de performance ne se limitent pas au calcul du temps d'exécution. Vous pouvez également obtenir des résultats plus précis en testant le temps moyen de plusieurs exécutions de commandes. De plus, les points suivants peuvent également aider à optimiser le processus de test des performances:
Exécutez plusieurs appels système en parallèle : Si vous devez tester plusieurs commandes, vous pouvez envisager d'utiliser des méthodes d'exécution multi-thread ou parallèles.
Réduisez la sortie de la commande : Lorsqu'aucune sortie de commande n'est requise, essayez d'éviter de grandes quantités de sortie de données pour éviter d'affecter les résultats des tests de performance.
Évitez l'impact du cache : certaines commandes peuvent être affectées par le cache système, ce qui entraîne un temps d'exécution instable. Évitez ce problème en ajoutant des retards aléatoires ou des exécutions multiples.
En combinant les fonctions getTimeOfday () et Exec () , nous pouvons simplement tester et efficacement le temps d'exécution des commandes externes, évaluant ainsi les performances des appels système. Cette méthode convient à une variété de scénarios où l'efficacité d'exécution de la commande externe doit être testée, en particulier pendant le réglage des performances du système. En optimisant en continu la méthode de test, nous pouvons obtenir des données de performances plus précises et effectuer une optimisation du système en fonction de cela.