pg_trace

(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)

pg_tracePostgreSQL 接続のトレースを有効にする

説明

pg_trace(string $filename, string $mode = "w", ?PgSql\Connection $connection = null): bool

pg_trace() は、PostgreSQL フロントエンド/ バックエンド間の通信をデバック用のファイルにトレースすることを有効にします。 このトレース結果を完全に理解するためには、PostgreSQL 通信プロトコルの詳細に 精通している必要があります。

そうでない人にとっても、サーバーに送られたクエリのエラーを トレースすることは有用です。試しに grep '^To backend' trace.log を実行し、実際に PostgreSQL サーバーに送信される クエリを見てみるとよいでしょう。詳細な情報は » PostgreSQL Documentation を 参照ください。

パラメータ

filename

トレースログを書き込むファイルの名前(フルパスを含む)。 fopen() と同じ。

mode

オプションのファイルアクセスモード。fopen() と同じです。

connection

PgSql\Connection クラスのインスタンス。 connectionnull, の場合、デフォルトの接続を使います。 デフォルトの接続とは、pg_connect() または pg_pconnect() によって確立された直近の接続です。

警告

PHP 8.1.0 以降では、デフォルトの接続を使うことは推奨されなくなりました。

戻り値

成功した場合に true を、失敗した場合に false を返します。

変更履歴

バージョン 説明
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;
}
?>

参考

  • fopen() - ファイルまたは URL をオープンする
  • pg_untrace() - PostgreSQL 接続のトレースを無効にする

関連キーワード:  PostgreSQL, トレース, 接続, connection, fopen, PgSql, Connection, 期待, クラス, インスタンス