是否可以提供更多文档,以及一个小型(但可运行的)示例脚本来说明如何使用它?
一些问题(我在几十个教程中都见过“相同”的代码示例):-
(我仅使用大写字母来强调)
问题:D:T:O 代表什么?未解释。
问题:我们是否*仅*在一个自包含的脚本中使用这三行?这是否记录所有将来的 MYSQL 命令?
问题:- 我们是否将该行放在
- 我们连接到 MYSQL 后立即?
- 在我们连接到 MYSQL 之前?
- 在我们怀疑出错之前?
(PHP 5、PHP 7、PHP 8)
mysqli::debug -- mysqli_debug — 执行调试操作
面向对象风格
过程化风格
使用 Fred Fish 调试库执行调试操作。
options
表示要执行的调试操作的字符串
调试控制字符串是一系列以冒号分隔的字段,如下所示:
<field_1>:<field_2>:<field_N>
,
和逗号分隔的修饰符列表:flag[,modifier,modifier,...,modifier]
options 字符 |
描述 |
---|---|
O | MYSQLND_DEBUG_FLUSH |
A/a | MYSQLND_DEBUG_APPEND |
F | MYSQLND_DEBUG_DUMP_FILE |
i | MYSQLND_DEBUG_DUMP_PID |
L | MYSQLND_DEBUG_DUMP_LINE |
m | MYSQLND_DEBUG_TRACE_MEMORY_CALLS |
n | MYSQLND_DEBUG_DUMP_LEVEL |
o | 输出到文件 |
T | MYSQLND_DEBUG_DUMP_TIME |
t | MYSQLND_DEBUG_DUMP_TRACE |
x | MYSQLND_DEBUG_PROFILE_CALLS |
始终返回true
。
示例 #1 生成跟踪文件
<?php
/* 在本地(客户端)机器上的 '/tmp/client.trace' 中创建跟踪文件: */
mysqli_debug("d:t:o,/tmp/client.trace");
?>
注意:
要使用mysqli_debug()函数,必须编译 MySQL 客户端库以支持调试。
是否可以提供更多文档,以及一个小型(但可运行的)示例脚本来说明如何使用它?
一些问题(我在几十个教程中都见过“相同”的代码示例):-
(我仅使用大写字母来强调)
问题:D:T:O 代表什么?未解释。
问题:我们是否*仅*在一个自包含的脚本中使用这三行?这是否记录所有将来的 MYSQL 命令?
问题:- 我们是否将该行放在
- 我们连接到 MYSQL 后立即?
- 在我们连接到 MYSQL 之前?
- 在我们怀疑出错之前?
以下是关于 mysqli_debug() 的调试选项的信息
O,o:MYSQLND_DEBUG_FLUSH
A,a:MYSQLND_DEBUG_APPEND
F:MYSQLND_DEBUG_DUMP_FILE
L:MYSQLND_DEBUG_DUMP_LINE
m:MYSQLND_DEBUG_TRACE_MEMORY_CALLS
n:MYSQLND_DEBUG_DUMP_LEVEL
o:输出到文件
T:MYSQLND_DEBUG_DUMP_TIME
t:MYSQLND_DEBUG_DUMP_TRACE
x:MYSQLND_DEBUG_PROFILE_CALLS
f:? 仍在调查
例如,mysqli_debug("T:n:t:m:x:F:L:o,/tmp/client.trace");
mysqlnd 将把时间、级别、跟踪、内存调用、性能分析调用、文件、行写入 client.trace 文件。
22:35:42.704501 ../mysqlnd_connection.c: 269 0:>mysqlnd_connection_init
22:35:42.704538 ../mysqlnd_driver.c: 10 1:| >mysqlnd_driver::get_connection
22:35:42.704549 ../mysqlnd_driver.c: 10 2:| | info : persistent=1
22:35:42.704558 ../mysqlnd_alloc.c: 21 2:| | >_mysqlnd_pecalloc
22:35:42.704570 ../mysqlnd_alloc.c: 23 2:| | <_mysqlnd_pecalloc (total=3 own=3 in_calls=0)
22:35:42.704602 ../mysqlnd_alloc.c: 21 2:| | >_mysqlnd_pecalloc
22:35:42.704626 ../mysqlnd_alloc.c: 23 2:| | <_mysqlnd_pecalloc (total=2 own=2 in_calls=0)
22:35:42.704650 ../mysqlnd_connection.c: 15 2:| | >mysqlnd_error_info_init
22:35:42.704675 ../mysqlnd_connection.c: 10 3:| | | >mysqlnd_error_info::reset
22:35:42.704697 ../mysqlnd_connection.c: 10 3:| | | <mysqlnd_error_info::reset (total=1 own=1 in_calls=0)
22:35:42.704725 ../mysqlnd_connection.c: 16 2:| | <mysqlnd_error_info_init (total=51 own=50 in_calls=1)
22:35:42.704744 ../mysqlnd_connection.c: 21 2:| | >mysqlnd_connection_state_init
如果有什么问题,请告诉我。