PHP Conference Japan 2024

mysqli::debug

mysqli_debug

(PHP 5, PHP 7, PHP 8)

mysqli::debug -- mysqli_debug執行除錯操作

說明

物件導向風格

public mysqli::debug(字串 $options): true

程序式風格

mysqli_debug(字串 $options): true

使用 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

更新日誌

版本 說明
8.0.0 此函式現在永遠回傳 true。先前它在失敗時會回傳 false

範例

範例 #1 產生追蹤檔案

<?php

/* 在本機 (用戶端) 的 '/tmp/client.trace' 建立追蹤檔案: */
mysqli_debug("d:t:o,/tmp/client.trace");

?>

注意事項

注意:

要使用 mysqli_debug() 函式,您必須編譯 MySQL 用戶端函式庫以支援除錯功能。

另請參閱

新增註記

使用者貢獻的註記 3 則註記

Peter
10 年前
可以提供更多文件,並附上一個小的(但可運作的)範例腳本來示範如何使用它嗎?

一些問題(我在許多教學中都看到「相同」的程式碼範例):-

(我使用大寫只是為了強調)

問題:D:T:O 代表什麼意思?沒有說明。

問題:我們是否「只」在一個獨立的腳本中使用這三行?這會記錄所有未來的 MYSQL 命令嗎?

問題:我們是否將這一行放在

- 連接到 MYSQL 之後?
- 連接到 MYSQL 之前?
- 我們懷疑的錯誤之前?
riversnowchang at gmail dot com
6 年前
以下是關於 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 連線狀態)

如果有任何問題,請告訴我。
Domenic
6 年前
看起來可以參考這份手冊

http://tiebing.blogspot.com.au/2011/10/cc-dbug-library.html

(我還沒測試過)
To Top