mirror of
https://github.com/fofolee/uTools-Manuals.git
synced 2025-06-29 21:12:42 +08:00
357 lines
15 KiB
HTML
357 lines
15 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
|
<html>
|
|
<head>
|
|
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
|
|
<title>Returns a backtrace for each query inspected by the query cache</title>
|
|
</head>
|
|
<body class="docs"><div id="layout">
|
|
<div id="layout-content"><div id="function.mysqlnd-qc-get-query-trace-log" class="refentry">
|
|
<div class="refnamediv">
|
|
<h1 class="refname">mysqlnd_qc_get_query_trace_log</h1>
|
|
<p class="verinfo">(PECL mysqlnd_qc >= 1.0.0)</p><p class="refpurpose"><span class="refname">mysqlnd_qc_get_query_trace_log</span> — <span class="dc-title">Returns a backtrace for each query inspected by the query cache</span></p>
|
|
|
|
</div>
|
|
|
|
<div class="refsect1 description" id="refsect1-function.mysqlnd-qc-get-query-trace-log-description">
|
|
<h3 class="title">说明</h3>
|
|
<div class="methodsynopsis dc-description">
|
|
|
|
<span class="methodname"><strong>mysqlnd_qc_get_query_trace_log</strong></span>
|
|
( <span class="methodparam">void</span>
|
|
) : <span class="type">array</span></div>
|
|
|
|
<p class="para rdfs-comment">
|
|
Returns a backtrace for each query inspected by the query cache.
|
|
The collection of the backtrace is disabled by default. To collect
|
|
the backtrace you have to set the PHP configuration directive
|
|
<em>mysqlnd_qc.collect_query_trace</em> to
|
|
<em>1</em>
|
|
</p>
|
|
<p class="para">
|
|
The maximum depth of the backtrace is limited to the depth set
|
|
with the PHP configuration directive
|
|
<em>mysqlnd_qc.query_trace_bt_depth</em>.
|
|
</p>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="refsect1 parameters" id="refsect1-function.mysqlnd-qc-get-query-trace-log-parameters">
|
|
<h3 class="title">参数</h3>
|
|
<p class="para">此函数没有参数。</p>
|
|
</div>
|
|
|
|
|
|
<div class="refsect1 returnvalues" id="refsect1-function.mysqlnd-qc-get-query-trace-log-returnvalues">
|
|
<h3 class="title">返回值</h3>
|
|
<p class="para">
|
|
An array of query backtrace. Every list entry contains
|
|
the query string, a backtrace and further detail information.
|
|
</p>
|
|
|
|
<table class="doctable informaltable">
|
|
|
|
<col width="1*" />
|
|
<col width="9*" />
|
|
<thead>
|
|
<tr>
|
|
<th>Key</th>
|
|
<th>Description</th>
|
|
</tr>
|
|
|
|
</thead>
|
|
|
|
<tbody class="tbody">
|
|
<tr>
|
|
<td>
|
|
<em>query</em>
|
|
</td>
|
|
<td>
|
|
Query string.
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>
|
|
<em>origin</em>
|
|
</td>
|
|
<td>
|
|
Code backtrace.
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>
|
|
<em>run_time</em>
|
|
</td>
|
|
<td>
|
|
Query run time in milliseconds. The collection of
|
|
all times and the necessary
|
|
<em>gettimeofday</em>
|
|
system calls can be disabled by setting the PHP configuration
|
|
directive
|
|
<em>mysqlnd_qc.time_statistics</em> to
|
|
<em>0</em>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>
|
|
<em>store_time</em>
|
|
</td>
|
|
<td>
|
|
Query result set store time in milliseconds. The collection of
|
|
all times and the necessary
|
|
<em>gettimeofday</em>
|
|
system calls can be disabled by setting the PHP configuration
|
|
directive
|
|
<em>mysqlnd_qc.time_statistics</em> to
|
|
<em>0</em>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>
|
|
<em>eligible_for_caching</em>
|
|
</td>
|
|
<td>
|
|
<strong><code>TRUE</code></strong> if query is cacheable otherwise
|
|
<strong><code>FALSE</code></strong>.
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>
|
|
<em>no_table</em>
|
|
</td>
|
|
<td>
|
|
<strong><code>TRUE</code></strong> if the query has generated a result
|
|
set and at least one column from the result set has no table
|
|
name set in its metadata. This is usually the case with
|
|
queries which one probably do not want to cache such as
|
|
<em>SELECT SLEEP(1)</em>. By default any such query
|
|
will not be added to the cache. See also PHP configuration directive
|
|
<em>mysqlnd_qc.cache_no_table</em>.
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>
|
|
<em>was_added</em>
|
|
</td>
|
|
<td>
|
|
<strong><code>TRUE</code></strong> if the query result has been put into
|
|
the cache, otherwise
|
|
<strong><code>FALSE</code></strong>.
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>
|
|
<em>was_already_in_cache</em>
|
|
</td>
|
|
<td>
|
|
<strong><code>TRUE</code></strong> if the query result would have been
|
|
added to the cache if it was not already in the cache (cache hit).
|
|
Otherwise
|
|
<strong><code>FALSE</code></strong>.
|
|
</td>
|
|
</tr>
|
|
|
|
|
|
</tbody>
|
|
|
|
</table>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="refsect1 examples" id="refsect1-function.mysqlnd-qc-get-query-trace-log-examples">
|
|
<h3 class="title">范例</h3>
|
|
<div class="example" id="example-2298">
|
|
<p><strong>Example #1 <span class="function"><strong>mysqlnd_qc_get_query_trace_log()</strong></span> example</strong></p>
|
|
<div class="example-contents">
|
|
<div class="inicode"><pre class="inicode">mysqlnd_qc.collect_query_trace=1</pre>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="example-contents">
|
|
<div class="phpcode"><pre><span style="color: #000000">
|
|
<span style="color: #0000BB"><?php<br /></span><span style="color: #FF8000">/* Connect, create and populate test table */<br /></span><span style="color: #0000BB">$mysqli </span><span style="color: #007700">= new </span><span style="color: #0000BB">mysqli</span><span style="color: #007700">(</span><span style="color: #DD0000">"host"</span><span style="color: #007700">, </span><span style="color: #DD0000">"user"</span><span style="color: #007700">, </span><span style="color: #DD0000">"password"</span><span style="color: #007700">, </span><span style="color: #DD0000">"schema"</span><span style="color: #007700">, </span><span style="color: #DD0000">"port"</span><span style="color: #007700">, </span><span style="color: #DD0000">"socket"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$mysqli</span><span style="color: #007700">-></span><span style="color: #0000BB">query</span><span style="color: #007700">(</span><span style="color: #DD0000">"DROP TABLE IF EXISTS test"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$mysqli</span><span style="color: #007700">-></span><span style="color: #0000BB">query</span><span style="color: #007700">(</span><span style="color: #DD0000">"CREATE TABLE test(id INT)"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$mysqli</span><span style="color: #007700">-></span><span style="color: #0000BB">query</span><span style="color: #007700">(</span><span style="color: #DD0000">"INSERT INTO test(id) VALUES (1), (2)"</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">/* not cached */<br /></span><span style="color: #0000BB">$res </span><span style="color: #007700">= </span><span style="color: #0000BB">$mysqli</span><span style="color: #007700">-></span><span style="color: #0000BB">query</span><span style="color: #007700">(</span><span style="color: #DD0000">"SELECT id FROM test WHERE id = 1"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">-></span><span style="color: #0000BB">fetch_assoc</span><span style="color: #007700">());<br /></span><span style="color: #0000BB">$res</span><span style="color: #007700">-></span><span style="color: #0000BB">free</span><span style="color: #007700">();<br /><br /></span><span style="color: #FF8000">/* cache put */<br /></span><span style="color: #0000BB">$res </span><span style="color: #007700">= </span><span style="color: #0000BB">$mysqli</span><span style="color: #007700">-></span><span style="color: #0000BB">query</span><span style="color: #007700">(</span><span style="color: #DD0000">"/*" </span><span style="color: #007700">. </span><span style="color: #0000BB">MYSQLND_QC_ENABLE_SWITCH </span><span style="color: #007700">. </span><span style="color: #DD0000">"*/" </span><span style="color: #007700">. </span><span style="color: #DD0000">"SELECT id FROM test WHERE id = 2"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">-></span><span style="color: #0000BB">fetch_assoc</span><span style="color: #007700">());<br /></span><span style="color: #0000BB">$res</span><span style="color: #007700">-></span><span style="color: #0000BB">free</span><span style="color: #007700">();<br /><br /></span><span style="color: #FF8000">/* cache hit */<br /></span><span style="color: #0000BB">$res </span><span style="color: #007700">= </span><span style="color: #0000BB">$mysqli</span><span style="color: #007700">-></span><span style="color: #0000BB">query</span><span style="color: #007700">(</span><span style="color: #DD0000">"/*" </span><span style="color: #007700">. </span><span style="color: #0000BB">MYSQLND_QC_ENABLE_SWITCH </span><span style="color: #007700">. </span><span style="color: #DD0000">"*/" </span><span style="color: #007700">. </span><span style="color: #DD0000">"SELECT id FROM test WHERE id = 2"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$res</span><span style="color: #007700">-></span><span style="color: #0000BB">fetch_assoc</span><span style="color: #007700">());<br /></span><span style="color: #0000BB">$res</span><span style="color: #007700">-></span><span style="color: #0000BB">free</span><span style="color: #007700">();<br /><br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">mysqlnd_qc_get_query_trace_log</span><span style="color: #007700">());<br /></span><span style="color: #0000BB">?></span>
|
|
</span>
|
|
</pre></div>
|
|
</div>
|
|
|
|
<div class="example-contents"><p>以上例程会输出:</p></div>
|
|
<div class="example-contents screen">
|
|
<div class="cdata"><pre>
|
|
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)
|
|
}
|
|
}
|
|
</pre></div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="refsect1 seealso" id="refsect1-function.mysqlnd-qc-get-query-trace-log-seealso">
|
|
<h3 class="title">参见</h3>
|
|
<p class="para">
|
|
<ul class="simplelist">
|
|
<li class="member">
|
|
<a href="mysqlnd_qc.configuration.html" class="link">Runtime configuration</a>
|
|
</li>
|
|
<li class="member">
|
|
<a href="mysqlnd-qc.configuration.html#ini.mysqlnd-qc.collect-query-trace" class="link">mysqlnd_qc.collect_query_trace</a>
|
|
</li>
|
|
<li class="member">
|
|
<a href="mysqlnd-qc.configuration.html#ini.mysqlnd-qc.query-trace-bt-depth" class="link">mysqlnd_qc.query_trace_bt_depth</a>
|
|
</li>
|
|
<li class="member">
|
|
<a href="mysqlnd-qc.configuration.html#ini.mysqlnd-qc.time-statistics" class="link">mysqlnd_qc.time_statistics</a>
|
|
</li>
|
|
<li class="member">
|
|
<a href="mysqlnd-qc.configuration.html#ini.mysqlnd-qc.cache-no-table" class="link">mysqlnd_qc.cache_no_table</a>
|
|
</li>
|
|
<li class="member">
|
|
<span class="function"><a href="mysqlnd_qc_get_normalized_query_trace_log.html" class="function" rel="rdfs-seeAlso">mysqlnd_qc_get_normalized_query_trace_log()</a> - Returns a normalized query trace log for each query inspected by the query cache</span>
|
|
</li>
|
|
</ul>
|
|
</p>
|
|
</div>
|
|
|
|
|
|
</div></div></div></body></html> |