Rechercher une fonction PHP

mysqlnd_qc_get_query_trace_log

(PECL mysqlnd_qc >= 1.0.0)

mysqlnd_qc_get_query_trace_logRetourne une trace pour chaque requête inspectée par la mise en cache de requêtes

Description

mysqlnd_qc_get_query_trace_log ( void ) : array

Retourne une trace pour chaque requête inspectée par la mise en cache de requêtes. La collection de traces est désactivée par défaut. Pour collecter des traces, vous devez définir la directive de configuration PHP mysqlnd_qc.collect_query_trace à 1

La profondeur maximale des traces est limitée à la profondeur définie par la directive de configuration PHP mysqlnd_qc.query_trace_bt_depth.

Retour à la première page de Manuel PHP  Table des matières Haut

Liste de paramètres

Cette fonction ne contient aucun paramètre.

Retour à la première page de Manuel PHP  Table des matières Haut

Valeurs de retour

Un tableau de traces des requêtes. Chaque entrée de la liste contient la chaîne de requête, une trace ainsi que quelques informations détaillées.

Clé Description
query La chaîne représentant la requête.
origin Le code de la trace.
run_time Durée d'exécution de la requête, en millisecondes. La collection de toutes les durées ainsi que les appels nécessaires à la fonction système gettimeofday peuvent être désactivés en définissant la directive de configuration PHP mysqlnd_qc.time_statistics à 0.
store_time Durée de stockage du jeu de résultats de la requêtes, en millisecondes. La collection de toutes les durées ainsi que les appels nécessaires à la fonction système gettimeofday peuvent être désactivés en définissant la directive de configuration PHP mysqlnd_qc.time_statistics à 0.
eligible_for_caching TRUE si la requête est éligible à la mise en cache, FALSE sinon.
no_table TRUE si la requête a généré un jeu de résultats et au moins, une colonne du jeu de résultats n'a pas de nom de table de défini dans ces méta-données. C'est généralement le cas avec les requêtes qui ne doivent pas être mises en cache, comme SELECT SLEEP(1). Par défaut, ce genre de requêtes ne sera pas ajouté au cache. Voir aussi la directive de configuration PHP mysqlnd_qc.cache_no_table.
was_added TRUE si le résultat de la requête a été ajouté au cache, FALSE sinon.
was_already_in_cache TRUE si le résultat de la requête aurait été mise en cache si elle n'y était pas déjà présente, FALSE sinon.

Retour à la première page de Manuel PHP  Table des matières Haut

Exemples

Exemple #1 Exemple avec mysqlnd_qc_get_query_trace_log()

mysqlnd_qc.collect_query_trace=1
<?php
/* Connexion, création et population de la table test */
$mysqli = new mysqli("host""user""password""schema""port""socket");
$mysqli->query("DROP TABLE IF EXISTS test");
$mysqli->query("CREATE TABLE test(id INT)");
$mysqli->query("INSERT INTO test(id) VALUES (1), (2)");

/* non mis en cache */
$res $mysqli->query("SELECT id FROM test WHERE id = 1");
var_dump($res->fetch_assoc());
$res->free();

/* Mis en cache */
$res $mysqli->query("/*" MYSQLND_QC_ENABLE_SWITCH "*/" "SELECT id FROM test WHERE id = 2");
var_dump($res->fetch_assoc());
$res->free();

/* Récupéré depuis le cache */
$res $mysqli->query("/*" MYSQLND_QC_ENABLE_SWITCH "*/" "SELECT id FROM test WHERE id = 2");
var_dump($res->fetch_assoc());
$res->free();

var_dump(mysqlnd_qc_get_query_trace_log());
?>

Les exemples ci-dessus vont afficher :

array(1) {
  ["id"]=>
  string(1) "1"
}
array(1) {
  ["id"]=>
  string(1) "2"
}
array(1) {
  ["id"]=>
  string(1) "2"
}
array(6) {
  [0]=>
  array(8) {
    ["query"]=>
    string(25) "DROP TABLE IF EXISTS test"
    ["origin"]=>
    string(102) "#0 qc.php(4): mysqli->query('DROP TABLE IF E...')
#1 {main}"
    ["run_time"]=>
    int(0)
    ["store_time"]=>
    int(0)
    ["eligible_for_caching"]=>
    bool(false)
    ["no_table"]=>
    bool(false)
    ["was_added"]=>
    bool(false)
    ["was_already_in_cache"]=>
    bool(false)
  }
  [1]=>
  array(8) {
    ["query"]=>
    string(25) "CREATE TABLE test(id INT)"
    ["origin"]=>
    string(102) "#0 qc.php(5): mysqli->query('CREATE TABLE te...')
#1 {main}"
    ["run_time"]=>
    int(0)
    ["store_time"]=>
    int(0)
    ["eligible_for_caching"]=>
    bool(false)
    ["no_table"]=>
    bool(false)
    ["was_added"]=>
    bool(false)
    ["was_already_in_cache"]=>
    bool(false)
  }
  [2]=>
  array(8) {
    ["query"]=>
    string(36) "INSERT INTO test(id) VALUES (1), (2)"
    ["origin"]=>
    string(102) "#0 qc.php(6): mysqli->query('INSERT INTO tes...')
#1 {main}"
    ["run_time"]=>
    int(0)
    ["store_time"]=>
    int(0)
    ["eligible_for_caching"]=>
    bool(false)
    ["no_table"]=>
    bool(false)
    ["was_added"]=>
    bool(false)
    ["was_already_in_cache"]=>
    bool(false)
  }
  [3]=>
  array(8) {
    ["query"]=>
    string(32) "SELECT id FROM test WHERE id = 1"
    ["origin"]=>
    string(102) "#0 qc.php(9): mysqli->query('SELECT id FROM ...')
#1 {main}"
    ["run_time"]=>
    int(0)
    ["store_time"]=>
    int(25)
    ["eligible_for_caching"]=>
    bool(false)
    ["no_table"]=>
    bool(false)
    ["was_added"]=>
    bool(false)
    ["was_already_in_cache"]=>
    bool(false)
  }
  [4]=>
  array(8) {
    ["query"]=>
    string(41) "/*qc=on*/SELECT id FROM test WHERE id = 2"
    ["origin"]=>
    string(103) "#0 qc.php(14): mysqli->query('/*qc=on*/SELECT...')
#1 {main}"
    ["run_time"]=>
    int(311)
    ["store_time"]=>
    int(13)
    ["eligible_for_caching"]=>
    bool(true)
    ["no_table"]=>
    bool(false)
    ["was_added"]=>
    bool(true)
    ["was_already_in_cache"]=>
    bool(false)
  }
  [5]=>
  array(8) {
    ["query"]=>
    string(41) "/*qc=on*/SELECT id FROM test WHERE id = 2"
    ["origin"]=>
    string(103) "#0 qc.php(19): mysqli->query('/*qc=on*/SELECT...')
#1 {main}"
    ["run_time"]=>
    int(13)
    ["store_time"]=>
    int(8)
    ["eligible_for_caching"]=>
    bool(true)
    ["no_table"]=>
    bool(false)
    ["was_added"]=>
    bool(false)
    ["was_already_in_cache"]=>
    bool(true)
  }
}
Rechercher une fonction PHP

Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-function.mysqlnd-qc-get-query-trace-log.html

L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.

Références

  1. Consulter le document html Langue du document :fr Manuel PHP : http://php.net

Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.

Table des matières Haut