(PECL mysqlnd_qc >= 1.0.0)
mysqlnd_qc_get_query_trace_log — Devuelve información de rastreo para cada consulta inspeccionada por la caché de consultas
Devuelve un informe de rastreo para cada consulta inspeccionada por la caché de consultas. La recopilación de información de rastreo está deshabilitada de forma predeterminada. Para recopilar de información de rastreo se ha de establecer la directiva de configuración de PHP mysqlnd_qc.collect_query_trace a 1
La profundidad máxima de la búsqueda de rastreo está limitada por la profundidad establecida con la directiva de configuración de PHP mysqlnd_qc.query_trace_bt_depth.
Esta función no tiene parámetros.
Un array de información de rastreo de consultas. Cada entrada de la lista contiene la cadena de consulta, información de rastreo y más información detallada.
Clave | Descripción |
---|---|
query | La cadena de consulta. |
origin | El código de la información de rastreo. |
run_time | El tiempo de ejecución de la consulta en milisegundos. La recopilación de todos los tiempos y las llamadas al sistema de gettimeofday necesarias se pueden deshabilitar estableciendo la directiva de configuración de PHP mysqlnd_qc.time_statistics a 0 |
store_time | El tiempo de almacenamiento del conjunto de resultados de la consultas en milisegundos. La recopilación de todos los tiempos y las llamadas al sistema de gettimeofday necesarias se pueden deshabilitar estableciendo la directiva de configuración de PHP mysqlnd_qc.time_statistics a 0 |
eligible_for_caching |
TRUE si la consulta es almacenable en caché,
FALSE si no.
|
no_table |
TRUE si la consulta ha generado un conjunto de resultados
y al menos una columna del mismo no tiene un nombre de tabla
establecido en sus metadatos. Éste normalmente es el caso de las
consultas que no probablemente no se quieran almacenar en caché, tales como
SELECT SLEEP(1). Por omisión, tales consultas
no serán añadidas a la caché. Véase también la directiva de configuración de PHP
mysqlnd_qc.cache_no_table.
|
was_added |
TRUE si el resultado de la consulta se ha colocado en
la caché,
FALSE si no.
|
was_already_in_cache |
TRUE si el resultado de la consulta habría sido
añadido a la caché si ya no estuviera en ella (coincidencia con la caché).
De lo contrario
FALSE .
|
Ejemplo #1 Ejemplo de mysqlnd_qc_get_query_trace_log()
mysqlnd_qc.collect_query_trace=1
<?php
/* Conectar, crear y rellenar la tabla test */
$mysqli = new mysqli("host", "usuario", "contraseña", "esquema", "puerto", "socket");
$mysqli->query("DROP TABLE IF EXISTS test");
$mysqli->query("CREATE TABLE test(id INT)");
$mysqli->query("INSERT INTO test(id) VALUES (1), (2)");
/* no almacenada en caché */
$res = $mysqli->query("SELECT id FROM test WHERE id = 1");
var_dump($res->fetch_assoc());
$res->free();
/* colocada en la caché */
$res = $mysqli->query("/*" . MYSQLND_QC_ENABLE_SWITCH . "*/" . "SELECT id FROM test WHERE id = 2");
var_dump($res->fetch_assoc());
$res->free();
/* coincidencia con la caché */
$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());
?>
El resultado de los ejemplos sería:
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) } }