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

# pg_trace

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

pg_trace — PostgreSQL 接続のトレースを有効にする

### 説明

function pg_trace(
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` を指定します。

### 戻り値

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

### 変更履歴

バージョン | 説明
--- | ---
8.3.0 | `trace_mode` が追加されました。
8.1.0 | `connection` は、PgSql\Connection クラスのインスタンスを期待するようになりました。 これより前のバージョンでは、resource を期待していました。
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 接続のトレースを無効にする

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open