Параметры транзакций в PHP [сообщение #5083] |
Mon, 20 May 2024 10:44 ![Переход к следующему сообщению Переход к следующему сообщению](/theme/default/images/down.png) |
inoremap
Сообщений: 10 Зарегистрирован: August 2023
|
Junior Member |
|
|
В программе на PHP надо запускать транзакции без ожидания завершения конкурирующей транзакции при появлении конфликтов.
В PDO драйвере Firebird SQL установка параметров транзакций отключена - firebird_driver.c#L287
Правильно ли я понимаю что вместо
$db->beginTransaction();
$db->commit();
$db->rollback();
можно использовать
$db->exec('set transaction read write no wait isolation level snapshot');
$db->exec('commit');
$db->exec('rollback');
?
Можно ли смешивать
$db->exec('set transaction read write no wait isolation level snapshot');
c
?
ОС - Debian 11, PHP 7.4.33, Firebird SQL 3.0.7
|
|
|
|
|
|
|
|
|
|
Re: Параметры транзакций в PHP [сообщение #5095 является ответом на сообщение #5091] |
Tue, 21 May 2024 08:44 ![Переход к предыдущему сообщению Переход к предыдущему сообщению](/theme/default/images/up.png) |
inoremap
Сообщений: 10 Зарегистрирован: August 2023
|
Junior Member |
|
|
SD писал(а) Mon, 20 May 2024 16:51Судя по беглому осмотру исходника - можно всё. Но что тебе мешает собрать этот драйвер с включенной установкой параметров?
Непонятно как это использовать, констант PDO_TRANS_CONFLICT_RESOLUTION, PDO_TRANS_RETRY и PDO_TRANS_ABORT я не нашел нигде кроме отключенного блока в firebird_handle_begin.
avp писал(а) Mon, 20 May 2024 22:22Когда я как то пытался так делать, то у меня не работало.
Работает если выключить ATTR_AUTOCOMMIT
$db->setAttribute(PDO::ATTR_AUTOCOMMIT, false);
|
|
|