(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)
pg_trace — Включает трассировку подключения PostgreSQL
$filename,$mode = "w",$connection = null,$trace_mode = 0pg_trace() включает трассировку соединения с PostgreSQL сервером во внешний файл. Чтобы понимать содержимое таких файлов, необходимо хорошо разбираться во внутреннем устройстве клиент-серверного взаимодействия.
Для тех, кто не обладает подобными навыками, трассировка всё же может оказаться полезной для поиска ошибок при отправке запросов на сервер. Например, можно выполнить команду grep '^To backend' trace.log и посмотреть, какие запросы реально отправлены на сервер. Дополнительную информацию можно почерпнуть из » документации 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.
      
   Функция возвращает true, если выполнилась успешно, или false, если возникла ошибка.
  
| Версия | Описание | 
|---|---|
| 8.3.0 | Добавлен параметр trace_mode. | 
| 8.1.0 | Параметр connectionтеперь ожидает экземпляр
  класса PgSql\Connection; раньше параметр ожидал ресурс (resource). | 
| 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;
}
?>
