Изменено поведение транзакции php-interbase по умолчанию - PullRequest
2 голосов
/ 28 марта 2011

У меня есть несколько сценариев PHP CLI, которые выполняются в течение длительного времени (24 часа и более), и, хотя они выполняют регулярные 'коммиты, у меня были некоторые проблемы с потерянными транзакциями - возможно, из-за сбоя сценариев.

Мое решение состояло в том, чтобы создать транзакцию следующим образом - это было год назад, когда я исследовал это и не мог вспомнить точные причины этих настроек, но это, казалось, решило некоторые проблемы с базой данных.

$ dbh = ibase_connect ($ dbhost, $ dbuser, $ dbpass);$ trans = ibase_trans (IBASE_WRITE + IBASE_COMMITTED + IBASE_REC_VERSION + IBASE_WAIT, $ dbh);

Обновлены до php 5.3.5 и обнаружили, что строка ibase_trans вызывает ошибку сегментации.На странице php ibase_trans есть примечание:

"Поведение этой функции было изменено в PHP 5.0.0. Первый вызов ibase_trans () не вернет транзакцию по умолчанию для соединения."

Таким образом, мой вопрос заключается в том, могу ли я установить аргументы транзакции для транзакции по умолчанию ... Вторичный вопрос, не упускаю ли я смысл пытаться сделать это в любом случае!

Спасибо

1 Ответ

0 голосов
/ 29 сентября 2012

Вы не должны работать с транзакцией по умолчанию.

Определите вашу транзакцию следующим образом:

$T = ibase_trans($params, $database);

После запуска вашего запроса:

 ibase_query($T, $SQL, $Params)

или вы можете использовать ibase_prepare & ibase_execute.

После этого звоните

ibase_commit_ret($T); // this mentain transaction active

или

ibase_commit($T) // this commit work close transaction
...