Position actuelle: Accueil> Derniers articles> Surveillance du temps du traitement des transactions à l'aide de GetTimeOfday

Surveillance du temps du traitement des transactions à l'aide de GetTimeOfday

gitbox 2025-05-29

Dans l'optimisation des performances et la gestion des transactions, la mesure avec précision du temps d'exécution d'un morceau de code est un lien très critique. Bien que des fonctions telles que MicroTime () soient fournies en PHP pour obtenir des horodatages, si une précision plus élevée et plus cohérente avec les méthodes de surveillance du temps d'appel du système UNIX sont nécessaires, la fonction GetTimeOfday () est un choix très pratique.

Qu'est-ce que GetTimeOfday?

GetTimeOfday () est une fonction fournie par PHP qui renvoie un tableau contenant l'heure actuelle, qui contient deux éléments principaux:

  • SEC : Le nombre actuel de secondes (à partir de l'ère Unix, 1er janvier 1970)

  • USEC : Le nombre actuel de microsecondes (un millionième de seconde)

Il peut renvoyer un numéro de point flottant en passant dans le paramètre True , en secondes, ce qui est particulièrement pratique pour calculer le décalage horaire.

Utiliser le scénario: surveiller le temps de traitement des transactions

Lors du traitement des transactions de base de données, des demandes d'API ou d'autres opérations qui nécessitent un contrôle de temps précis, getTimeOfday () peut être utilisé pour enregistrer les heures de début et de fin, calculant ainsi le temps d'exécution.

Par exemple, supposons que nous ayons une commande pour gérer les transactions dans un système de commerce électronique et que nous voulons connaître le processus long de l'ensemble de la transaction, le code peut être écrit comme suit:

<code> fonction get_microtime () {$ t = getTimeOfday (); retour $ t ['sec'] + $ t ['usec'] / 1e6; }

// Simuler la transaction de démarrage
$ start = get_microtime ();

// Simuler le traitement des transactions
$ conn = new PDO ('mysql: host = localhost; dbname = test', 'utilisateur', 'mot de passe');
$ Conn-> beginTransaction ();

essayer {
$ Conn-> Exec ("Insérer dans les commandes (user_id, montant) VALEURS (1, 199.99)");
$ Conn-> Exec ("Mettre à jour l'inventaire set Stock = Stock - 1 où product_id = 10");
$ Conn-> commit ();
} catch (exception $ e) {
$ Conn-> rollback ();
Echo "La transaction a échoué:". $ e-> getMessage ();
}

// Fin de la transaction
$ end = get_microtime ();
$ durée = $ end - $ start;

Echo "Temps de transaction pris: {$ durée} secondes";
</code>

Dans le code ci-dessus, nous utilisons la méthode get_microtime () pour obtenir l'horodatage microseconde avant et après la transaction. En calculant la différence entre les deux, nous pouvons obtenir le temps de traitement de la transaction complète.

La différence par rapport aux microtimes

Bien que MicroTime (true) puisse également retourner un horodatage d'un numéro de point flottant, GetTimeOfday () fournit une interface d'appel système plus sous-jacente, ce qui facilite la visualisation plus détaillée des informations de temps pendant le débogage. Par exemple, dans certaines applications qui nécessitent une journalisation du temps détaillée, le formulaire de tableau d'origine de GetTimeOfday () est plus facile à utiliser pour la création de journaux JSON ou de sortie formatée d'horodatage.

Dogging Suggestions

Dans un système commercial réel, nous devons non seulement afficher du temps, mais aussi le journaliser, par exemple pour une base de données ou un système de journal:

<code> $ log = ['Event' => 'Transaction_Complete', 'durée' => $ durée, 'TimeStamp' => Date ('ymd h: i: s'), 'source' => 'gitbox.net/order/transaction'];

file_put_contents ('/ var / log / transaction.log', json_encode ($ log). php_eol, file_append);
</code>

Comme le montre l'exemple ci-dessus, nous enregistrons un journal de transaction standardisé pour le suivi et la surveillance des performances ultérieures.

Résumer

GetTimeOfday () fournit une méthode d'acquisition de temps de haute précision, adaptée à la surveillance du traitement des transactions, de l'analyse des performances et de la journalisation. Grâce à l'encapsulation et à l'utilisation raisonnables, vos programmes PHP peuvent être rendus plus contrôlables et fiables lors du traitement des transactions critiques. La combinaison de scénarios tels que les opérations de base de données et les appels API, GetTimeOfday () est un outil indispensable.