可以提供更多文件,並附上一個小的(但可運作的)範例腳本來示範如何使用它嗎?
一些問題(我在許多教學中都看到「相同」的程式碼範例):-
(我使用大寫只是為了強調)
問題: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:| | 資訊 : 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)(總計=1 擁有=1 呼叫次數=0)
22:35:42.704725 ../mysqlnd_connection.c: 16 2:| | <mysqlnd_error_info_init (total=51 own=50 in_calls=1)(總計=51 擁有=50 呼叫次數=1)
22:35:42.704744 ../mysqlnd_connection.c: 21 2:| | >mysqlnd_connection_state_init(初始化 mysqlnd 連線狀態)
如果有任何問題,請告訴我。