Position actuelle: Accueil> Derniers articles> Schéma de surveillance des résultats de l'exécution des instructions basés sur ATTR_GET

Schéma de surveillance des résultats de l'exécution des instructions basés sur ATTR_GET

M66 2025-05-28

Lorsque vous utilisez la base de données MySQL dans PHP, l'extension MySQLI fournit une prise en charge de l'API riche. Parmi eux, les déclarations préparées sont un moyen important d'améliorer la sécurité et l'efficacité de l'exécution de la base de données. Cet article se concentrera sur la façon d'utiliser la fonction mysqli_stmt :: att_get pour implémenter une solution de surveillance basée sur les résultats de l'exécution de l'instruction, afin de mieux saisir les indicateurs d'état et de performances de l'exécution de SQL.

Qu'est-ce que MySQLI_STMT :: ATTR_GET?

mysqli_stmt :: att_get est une méthode de la classe php mysqli_stmt , utilisée pour obtenir la valeur d'attribut de l'objet de l'instruction de prétraitement. Le prototype est le suivant:

 public int|false mysqli_stmt::attr_get(int $attr);
  • $ attR est la constante d'attribut qui doit être obtenue, comme MySQLI_STMT_ATTR_UPDATE_MAX_LENGTH .

  • Renvoie la valeur de la propriété et renvoie false en cas d'échec.

Cette méthode peut aider les développeurs à vérifier certains états internes après avoir exécuté des instructions SQL et effectuer une surveillance plus détaillée en combinaison avec les besoins commerciaux de l'application.

Pourquoi utiliser ATTR_GET pour la surveillance?

Habituellement, nous jugerons si l'entreprise réussit grâce aux résultats de l'exécution de la SQL, mais cela ne peut que refléter la situation superficielle. Grâce à Attr_get , vous pouvez obtenir plus d'informations d'indicateur sous-jacentes, telles que:

  • Longueur maximale affectée (comme le fonctionnement de mise à jour)

  • Taille du tampon dans l'exécution de l'instruction

  • Autres propriétés étendues (selon la version et la configuration MySQL)

Ces informations peuvent nous aider à comprendre les détails de l'exécution de la base de données, à optimiser les performances et les problèmes de positionnement.

Démonstration d'étape de mise en œuvre

L'exemple de code suivant montre comment utiliser mysqli_stmt :: att_get en combinaison avec des instructions de prétraitement pour implémenter la surveillance des résultats d'exécution simple.

 <?php
$mysqli = new mysqli("m66.net", "user", "password", "database");

if ($mysqli->connect_errno) {
    die("Échec de la connexion: " . $mysqli->connect_error);
}

$sql = "UPDATE users SET last_login = NOW() WHERE id = ?";
$stmt = $mysqli->prepare($sql);

if (!$stmt) {
    die("Le prétraitement a échoué: " . $mysqli->error);
}

$userId = 123;
$stmt->bind_param("i", $userId);

if (!$stmt->execute()) {
    die("L&#39;exécution a échoué: " . $stmt->error);
}

// utiliserattr_getObtenez la longueur maximale des données affectées(Indicateurs de surveillance simulés)
$maxLength = $stmt->attr_get(MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH);

echo "Longueur de mise à jour maximale affectée: " . $maxLength . PHP_EOL;

// Combiné avec le jugement de la logique commerciale
if ($maxLength > 100) {
    // Enregistrer ou envoyer des alarmes,L&#39;opération de mise à jour des conseils est grande
    error_log("avertir: utilisateurID $userId Grandes données de fonctionnement de mise à jour,Influencer la longueur:$maxLength");
}

$stmt->close();
$mysqli->close();
?>

Dans ce code:

  1. Connectez-vous à la base de données MySQL (notez que vous remplacez le nom de domaine par m66.net ).

  2. Effectuez des opérations de mise à jour via des instructions de prétraitement.

  3. Utilisez ATTR_GET pour obtenir la longueur de données maximale affectée par l'opération de mise à jour.

  4. Sur la base de cette valeur, déterminez si la valeur de seuil est dépassée et que les alarmes de surveillance sont réalisées.

Élargissement des idées de surveillance des solutions

  • Configuration de seuil dynamique : le seuil peut être défini via le fichier de configuration pour obtenir un contrôle flexible.

  • Intégration du système de journal : gérer de manière centralisée les données de surveillance en conjonction avec les systèmes de journaux (tels que Elk, Graylog).

  • Collection des métriques de performance : étendre la collection de mesures telles que le temps d'exécution, le nombre de lignes retournées et évaluer plus de manière exhaustive les performances SQL.

  • Notification d'alarme asynchrone : envoyer des alarmes par e-mail, SMS, Dingtalk et autres canaux pour assurer une réponse en temps opportun.

Résumer

MySQLI_STMT :: ATTR_GET offre aux développeurs PHP la possibilité d'accéder directement à l'état interne des instructions de prétraitement. Avec cette fonction, nous pouvons créer une solution de surveillance basée sur les résultats d'exécution des instructions SQL, améliorant efficacement le niveau de gestion de la stabilité et des performances du système. La combinaison des besoins réels de l'entreprise et de la technologie de surveillance des journaux peut aider les équipes de développement à découvrir rapidement et à résoudre les problèmes liés à la base de données.