Транзакции PHP+Mysql

AE
На сайте с 21.08.2008
Offline
14
3567

Усовершентсвуйю движок. Необходимо выполнять безопасное изменение в 3-х таблицах с гарантией правильного выполнения. Возник вопрос по поводу работы С транзакциями в PHP. Проблема в общем то в том что PHP посылает запросы по 1, если попробывать послать сразу целиком выдается ошибка. Тогда решил выполнять все запросы построчно проверяя на возможную ошибку и делать ROLLBACK в случе не корректной ситуации. Но появляется возможность зависнуть непосредственно скрипту и тогда ROLLBACK не произойдет.Так вот вопрос можно как то сразу передать все запросы чтобы передать контроль самому серверу? Желательно решение используя PEAR::db потому как на данный момент не ясен сервер SQL, но впринципе это не играет роли

P
На сайте с 08.03.2007
Offline
250
#1

Вы просто молодец, что взялись за такой непосильный труд - воспользоваться транзакциями в mysql . Конечно, innodb?

AE
На сайте с 21.08.2008
Offline
14
#2
Pilat:
Вы просто молодец, что взялись за такой непосильный труд - воспользоваться транзакциями в mysql . Конечно, innodb?

Да на InnoDB. Повышать надежность сайтов надо же :)

В интернете многие форумы облазил ничего конкретного по поводу того чтобы передать все управление серверу MySql пока не нашел, все таки из опыта сервер выполняет все быстрее и надежней чем самому проверять.

P
На сайте с 08.03.2007
Offline
250
#3

Обычно делают begin_tranzaction; insert ... delete... update... commit || rollback.

В пределах сеанса всё должно работать. Наерняка в настройках есть какое-то упоминание о том, стоит ли автоматически делать commit или автоматически rollback, если ни то ни другое не выполнено. Посмотрите http://www.urlix.ru/docs/php/pdo.transactions.html - "When the script ends or when a connection is about to be closed, if you have an outstanding transaction, PDO will automatically roll it back. Внимание

The automatic rollback only happens if you initiate the transaction via PDO::beginTransaction(). If you manually issue a query that begins a transaction PDO has no way of knowing about it and thus cannot roll it back if something bad happens."

AE
На сайте с 21.08.2008
Offline
14
#4

Pilat о спасибо ОГРОМНОЕ то что надо понял, в какую сторону искать, чет не подумал что методы есть устанавливающие авто откаты :)

Сейчас поищу в PEAR\DB чтоб все под один интерфейс сделать

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий