(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)
pg_trace — 啟用追蹤 PostgreSQL 連線
$filename
,$mode
= "w",$connection
= null
,$trace_mode
= 0pg_trace() 可啟用 PostgreSQL 前端/後端通訊的追蹤,並將追蹤記錄寫入檔案。要完全理解追蹤結果,需要熟悉 PostgreSQL 通訊協定的內部運作。
即使不熟悉 PostgreSQL 通訊協定,它仍然可以用於追蹤發送到伺服器的查詢錯誤,例如,您可以執行 grep '^To backend' trace.log 來查看實際發送到 PostgreSQL 伺服器的查詢。更多資訊,請參考 » PostgreSQL 文件。
filename
要寫入追蹤記錄的檔案的完整路徑和檔名。與 fopen() 中的用法相同。
mode
可選的檔案存取模式,與 fopen() 中的用法相同。
connection
一個 PgSql\Connection 實例。當 connection
為 null
時,將使用預設連線。預設連線是最後一次由 pg_connect() 或 pg_pconnect() 建立的連線。
自 PHP 8.1.0 起,不建議使用預設連線。
trace_mode
可選的追蹤模式,具有以下常數:PGSQL_TRACE_SUPPRESS_TIMESTAMPS
和 PGSQL_TRACE_REGRESS_MODE
版本 | 說明 |
---|---|
8.3.0 |
新增了 trace_mode 參數。 |
8.1.0 | connection 參數現在需要一個 PgSql\Connection 實例;先前需要一個 資源。 |
8.0.0 |
connection 現在可以為 null。 |
範例 #1 pg_trace() 範例
<?php
$pgsql_conn = pg_connect("dbname=mark host=localhost");
if ($pgsql_conn) {
pg_trace('/tmp/trace.log', 'w', $pgsql_conn);
pg_query("SELECT 1");
pg_untrace($pgsql_conn);
// 現在 /tmp/trace.log 將包含後端通訊記錄
} else {
print pg_last_error($pgsql_conn);
exit;
}
?>