registros obtener mysqli_num_rows mysql_num_rows mostrar datos contar consulta php mysql webserver execution-time

mysqli_num_rows - obtener datos mysql php



¿Cómo obtener el tiempo de ejecución de una consulta MySQL desde PHP? (3)

Esta pregunta ya tiene una respuesta aquí:

Ejecuto consultas de MySQL desde PHP y me gustaría saber cuánto tiempo consumen. ¿Hay alguna manera de obtener el tiempo de ejecución de una consulta de MySQL desde PHP?

También me pregunto si el tiempo de ejecución depende de cómo esté cargado el servidor web. Puedo imaginar que una consulta tardará más tiempo en ejecutarse si el servidor está ocupado con otras consultas. Por otro lado, puedo imaginar que, si el servidor está ocupado, la consulta solo esperará su turno y luego se ejecutará (sin ninguna consulta ejecutada en paralelo) y el tiempo de espera no se incluye en el tiempo de ejecución . Entonces, ¿qué escenarios (de dos) son correctos?


Para sacarlo de MySQL, puede usar el registro general.

Si aún no está encendido, enciéndelo:

SET GLOBAL general_log = ''ON'';

Para ver los datos después de haber ejecutado su consulta:

SELECT * FROM mysql.general_log;

Entre otras cosas, obtendrá el tiempo de ejecución de la consulta, como probablemente haya visto en phpmyadmin.


microtime() toma tiempo para ejecutarse. Si desea obtener los datos directamente desde mysql, haga esto ...

mysql_query("SET profiling = 1;"); if (mysql_errno()) { die( "ERROR ".mysql_errno($link) . ": " . mysql_error($link) ); } $query="SELECT some_field_name FROM some_table_name"; $result = mysql_query($query); if (mysql_errno()) { die( "ERROR ".mysql_errno($link) . ": " . mysql_error($link) ); } $exec_time_result=mysql_query("SELECT query_id, SUM(duration) FROM information_schema.profiling GROUP BY query_id ORDER BY query_id DESC LIMIT 1;"); if (mysql_errno()) { die( "ERROR ".mysql_errno($link) . ": " . mysql_error($link) ); } $exec_time_row = mysql_fetch_array($exec_time_result); echo "<p>Query executed in ".$exec_time_row[1].'' seconds'';


Probablemente hay alguna forma de hacer esto a través de MySQL, sin embargo, la forma fácil (y confiable) es usar la función de microtime de microtime de PHP, que devuelve la hora actual en milisegundos.

microtime () devuelve la marca de tiempo Unix actual con microsegundos. Esta función solo está disponible en los sistemas operativos que admiten la llamada al sistema gettimeofday ().

getasfloat : cuando se llama sin el argumento opcional, esta función devuelve la cadena "msec sec", donde sec es la hora actual medida en el número de segundos desde la época de Unix (0:00:00 1 de enero, 1970 GMT), y msec es La parte de microsegundos. Ambas porciones de la cadena se devuelven en unidades de segundos.

Si el get_as_float opcional se establece en TRUE, se devuelve un flotante (en segundos).

Algún código de ejemplo:

$sql = ''...''; $msc = microtime(true); mysql_query($sql); $msc = microtime(true)-$msc; echo $msc . '' s''; // in seconds echo ($msc * 1000) . '' ms''; // in millseconds