Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get the execution time of a MySQL query from PHP? [duplicate]

I execute MySQL queries from PHP and would like to know how time consuming they are. Is there any way to get the execution time of a MySQL query from PHP?

I also wonder if the execution time depends on how loaded is the web server. I can imagine that a query will take more time to execute if the server is busy with other queries. On the other hand, I can imagine that, if the server is busy, the query will just wait for its turn and then it will be executed (without any queries executed in parallel) and than the waiting time is not included into the execution time. So, what scenarios (out of two) is correct?

like image 992
Roman Avatar asked Dec 21 '10 17:12

Roman


People also ask

How do you find the execution time of a query?

You can use the time command to report how much time is spent, from the beginning to the end of a query execution. Including the time to connect to the database, execute the query and write the results to an output device.

How can I view one record's details in MySQL database using PHP?

Show activity on this post. $link = mysql_connect('localhost','root','yourPassword') mysql_select_db('database_name', $link); $sql = 'SELECT id FROM games LIMIT 1'; $result = mysql_query($sql, $link) or die(mysql_error()); $row = mysql_fetch_assoc($result); print_r($row);

What is Max_execution_time in MySQL?

The MAX_EXECUTION_TIME( N ) hint sets a statement execution timeout of N milliseconds. If this option is absent or N is 0, the statement timeout established by the max_execution_time system variable applies.

How do I find MySQL execution plan?

To view a visual explain execution plan, execute your query from the SQL editor and then select Execution Plan within the query results tab. The execution plan defaults to Visual Explain , but it also includes a Tabular Explain view that is similar to what you see when executing EXPLAIN in the MySQL client.


1 Answers

There is probably some way to do this via MySQL, however, the easy (and reliable) way is using PHP's microtime function, which returns the current time as milliseconds.

microtime() returns the current Unix timestamp with microseconds. This function is only > available on operating systems that support the gettimeofday() system call.

getasfloat - When called without the optional argument, this function returns the string "msec sec" where sec is the current time measured in the number of seconds since the Unix Epoch (0:00:00 January 1, 1970 GMT), and msec is the microseconds part. Both portions of the string are returned in units of seconds.

If the optional get_as_float is set to TRUE then a float (in seconds) is returned.

Some example code:

$sql = '...'; $msc = microtime(true); mysql_query($sql); $msc = microtime(true)-$msc; echo $msc . ' s'; // in seconds echo ($msc * 1000) . ' ms'; // in millseconds 
like image 154
Christian Avatar answered Sep 23 '22 18:09

Christian