pg_transaction_status

(PHP 5 >= 5.1.0, PHP 7)

pg_transaction_status Возвращает текущее состояние транзакции на сервере

Описание

int pg_transaction_status ( resource $connection )

Возвращает текущее состояние транзакции на сервере.

Предостережение

pg_transaction_status() выдает некорректный результат при работе с сервером PostgreSQL 7.3, на котором выключена опция autocommit. Автоматическое завершение транзакций на стороне сервера устарело и не используется в более поздних версиях.

Список параметров

connection

Ресурс соединения с базой данных PostgreSQL.

Возвращаемые значения

Список возможных состояний: PGSQL_TRANSACTION_IDLE (сервер бездействует), PGSQL_TRANSACTION_ACTIVE (выполняется запрос), PGSQL_TRANSACTION_INTRANS (сервер бездействует, работа в режиме транзакции), или PGSQL_TRANSACTION_INERROR (сервер бездействует, транзакция потерпела неудачу). PGSQL_TRANSACTION_UNKNOWN - ошибка подключения. PGSQL_TRANSACTION_ACTIVE возвращается только когда запрос уже отправлен на сервер, но еще не обработан.

Примеры

Пример #1 Пример использования pg_transaction_status()

<?php
  $dbconn 
pg_connect("dbname=publisher") or die("Подключиться не удалось");
  
$stat pg_transaction_status($dbconn);
  if (
$stat === PGSQL_TRANSACTION_UNKNOWN) {
      echo 
'Соединение не удалось';
  } else if (
$stat === PGSQL_TRANSACTION_IDLE) {
      echo 
'Соединение свободно и простаивает';
  } else {
      echo 
'Соединение в режиме транзакции';
  }    
?>

Коментарии

This function is implemented in C, so there's no way to mimic it in SQL for older versions of PHP.  But you can mimic some of the functionality by using a wrapper which keeps track of when you begin and commit/rollback transactions.
2006-07-17 22:27:09
http://php5.kiev.ua/manual/ru/function.pg-transaction-status.html
After one of the asynchronous functions (pg_send_query(), pg_send_query_params()...) has been used, pg_transaction_status() will always report PGSQL_TRANSACTION_ACTIVE, no matter if a transaction was started or not.
Even after the first call (or all valid calls) to pg_get_result() the transaction status will stay PGSQL_TRANSACTION_ACTIVE, until either
- a synchronous function like pq_query() was used, or
- another call to pg_get_result() was made, which returns false.
Note: calling pg_free_result() does not change anything.

<?php
  $conn 
pg_connect("dbname=publisher") or die("Could not connect");
 
$status pg_transaction_status($conn); // PGSQL_TRANSACTION_IDLE
 
pg_send_query($conn'SELECT 1');
 
$status pg_transaction_status($conn); // PGSQL_TRANSACTION_ACTIVE
 
$res pg_get_result($conn);
 
$status pg_transaction_status($conn); // PGSQL_TRANSACTION_ACTIVE
 
$res pg_get_result($conn); // false
 
$status pg_transaction_status($conn); // PGSQL_TRANSACTION_IDLE
?>
2021-10-23 05:17:24
http://php5.kiev.ua/manual/ru/function.pg-transaction-status.html

    Поддержать сайт на родительском проекте КГБ