SQLRU.net
Разработка приложений баз данных

Начало » Использование СУБД » Firebird, HQbird, InterBase » Параметры транзакций в PHP
Параметры транзакций в PHP [сообщение #5083] Mon, 20 May 2024 10:44 Переход к следующему сообщению
inoremap в настоящее время не в онлайне  inoremap
Сообщений: 12
Зарегистрирован: 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
$db->commit();
?

ОС - Debian 11, PHP 7.4.33, Firebird SQL 3.0.7
Re: Параметры транзакций в PHP [сообщение #5086 является ответом на сообщение #5083] Mon, 20 May 2024 14:51 Переход к предыдущему сообщениюПереход к следующему сообщению
SD в настоящее время не в онлайне  SD
Сообщений: 417
Зарегистрирован: August 2022
Senior Member
Судя по беглому осмотру исходника - можно всё. Но что тебе мешает собрать этот драйвер с включенной установкой параметров?
Re: Параметры транзакций в PHP [сообщение #5087 является ответом на сообщение #5086] Mon, 20 May 2024 14:55 Переход к предыдущему сообщениюПереход к следующему сообщению
sim_84 в настоящее время не в онлайне  sim_84
Сообщений: 332
Зарегистрирован: June 2022
Senior Member
Оно в свежей версии уже с возможностью ставить параметры транзакции в параметрах соединения.
7.4 конечно старьё и в него это не бекпортировали.

Цитата:
Судя по беглому осмотру исходника - можно всё. Но что тебе мешает собрать этот драйвер с включенной установкой параметров?
Дим прекрати уже. Там компилить пых лютый геморрой. Да и это обречёт тебя постоянно перекомпилить при любом обновлении.
Re: Параметры транзакций в PHP [сообщение #5090 является ответом на сообщение #5087] Mon, 20 May 2024 20:21 Переход к предыдущему сообщениюПереход к следующему сообщению
avp в настоящее время не в онлайне  avp
Сообщений: 83
Зарегистрирован: October 2023
Member
sim_84 писал(а) Mon, 20 May 2024 14:55
Оно в свежей версии уже с возможностью ставить параметры транзакции в параметрах соединения.
Где про это почитать?
Re: Параметры транзакций в PHP [сообщение #5091 является ответом на сообщение #5083] Mon, 20 May 2024 20:22 Переход к предыдущему сообщениюПереход к следующему сообщению
avp в настоящее время не в онлайне  avp
Сообщений: 83
Зарегистрирован: October 2023
Member
inoremap писал(а) Mon, 20 May 2024 10:44

$db->exec('set transaction read write no wait isolation level snapshot');
Когда я как то пытался так делать, то у меня не работало.
Re: Параметры транзакций в PHP [сообщение #5092 является ответом на сообщение #5090] Mon, 20 May 2024 21:00 Переход к предыдущему сообщениюПереход к следующему сообщению
sim_84 в настоящее время не в онлайне  sim_84
Сообщений: 332
Зарегистрирован: June 2022
Senior Member
Лично я прочитал в исходниках драйвера. Там вроде это добавили 3 месяца назад. Так что когда это войдет в релиз или уже вошло хз. Я давно не обновлялся
Re: Параметры транзакций в PHP [сообщение #5093 является ответом на сообщение #5092] Mon, 20 May 2024 21:12 Переход к предыдущему сообщениюПереход к следующему сообщению
sim_84 в настоящее время не в онлайне  sim_84
Сообщений: 332
Зарегистрирован: June 2022
Senior Member
https://github.com/php/php-src/blob/master/NEWS
Короче это будет только в следующей версии
Re: Параметры транзакций в PHP [сообщение #5094 является ответом на сообщение #5087] Tue, 21 May 2024 00:46 Переход к предыдущему сообщениюПереход к следующему сообщению
SD в настоящее время не в онлайне  SD
Сообщений: 417
Зарегистрирован: August 2022
Senior Member
sim_84 писал(а) Mon, 20 May 2024 13:55
Дим прекрати уже. Там компилить пых лютый геморрой. Да и это обречёт тебя постоянно перекомпилить при любом обновлении.
Всё правильно, извращенцы должны страдать.
Re: Параметры транзакций в PHP [сообщение #5095 является ответом на сообщение #5091] Tue, 21 May 2024 08:44 Переход к предыдущему сообщению
inoremap в настоящее время не в онлайне  inoremap
Сообщений: 12
Зарегистрирован: 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);
Предыдущая тема: Внешние зависимости
Следующая тема: firebirdtest.com подробные логи
Переход к форуму:
  


Текущее время: Sun Dec 22 05:24:34 GMT+3 2024

Общее время, затраченное на создание страницы: 0.00845 секунд