¿Cómo puedo contar el número total de consultas MySQL utilizadas por página?

¿Hay una función incorporada en PHP o MySQL que proporcione el número total de consultas MySQL utilizadas en una página? He visto en muchos sitios (principalmente foros) que tienen un mensaje en la parte inferior que dice algo así como “Página generada en 0,6 segundos con 20 consultas”.

Si no hay nada integrado, agregaré algo a mi clase de base de datos para contarlos, pero parece ser el tipo de funcionalidad que ya estaría disponible.

La primera opción sería pasar todas sus consultas a través de un contenedor:

function custom_mysql_query($sql) { $GLOBAL['query_count'] ++; return mysql_query($sql); } 

Tenga en cuenta que es solo para ilustración y sin manejo de errores, etc.

Puede consultar MySQL para el número de consultas ejecutadas:

 mysql> SHOW STATUS LIKE 'Com_select'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | Com_select | 2 | +---------------+-------+ 1 row in set (0.00 sec) 

Es posible que desee hacer algo como:

 SHOW STATUS LIKE 'Com_%'; 

y luego agregar juntos Com_select, Com_update, Com_insert y Com_delete

Lo que hago es crear una clase de consulta sql que cuente, agrega 1 a una variable llamada querycount cada vez que se ejecutan los métodos de consulta en la clase, así tengo un total acumulado.

No hay nada integrado en las extensiones nativas de mysql / mysqli de PHP. Si está utilizando una capa de abstracción de base de datos, puede haber algún tipo de análisis / evaluación comparativa integrada que le proporcione esa información.

Off-hand, sé que Kohana hace esto con la biblioteca de Profiler . Supongo que la mayoría de las bibliotecas de bases de datos hacen algo similar.

Si no está seguro de utilizar un marco de terceros o una capa de abstracción de base de datos, he tenido éxito simplemente subclasificando la clase PDO incorporada de PHP5. Puede agregar información de referencia básica y recuentos de consultas, y pasar las llamadas de query() o execute() a la clase principal.

Para evitar globales, en tu clase de db:

 class db { public static $query_count = 0; public static function query($str) { self::$query_count++; // your db query method here } } 

Luego solo acceda a su conteo estático de consultas de esta manera: