pg_trace
(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)
pg_trace — PostgreSQL 接続のトレースを有効にする
説明
string
$filename
,string
$mode
= "w",?PgSql\Connection
$connection
= null
,int
$trace_mode
= 0): bool
pg_trace() は、PostgreSQL フロントエンド/ バックエンド間の通信をデバック用のファイルにトレースすることを有効にします。 このトレース結果を完全に理解するためには、PostgreSQL 通信プロトコルの詳細に 精通している必要があります。
そうでない人にとっても、サーバーに送られたクエリのエラーを トレースすることは有用です。試しに grep '^To backend' trace.log を実行し、実際に PostgreSQL サーバーに送信される クエリを見てみるとよいでしょう。詳細な情報は » PostgreSQL Documentation を 参照ください。
パラメータ
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 は、nullable になりました。
|
例
例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;
}
?>