Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Распределенные транзакции на PHP+Mysql: с чего начать?
Покинул форум
Сообщений всего: 22
Дата рег-ции: Янв. 2012
Помог: 0 раз(а)
Добрый вечер уважаемые профессионалы и любители Веб-программирования! Помогите пожалуйста разобраться с распределенными транзакциями на PHP+Mysql. Собственно что хотелось бы, а хотелось следующее:
1)какой-то маленький пример реализации этого дела на PHP+Mysql
2)Какие-то статьи (для php пока не нашел если честно)
3)может какие-то доки и советы... Важно чтобы было связано с PHP.
Заранее спасибо!
Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011 Откуда: Беларусь
Помог: 69 раз(а)
транзакций на PHP нет, можно на MySQL с вызовом через php и передачей параметров, поэтому ищи в сторону MySQL, а через php думаю не составит труда реализовать, если конечно есть знания языка
----- То что программа работает, не означает что она написана правильно!
Мелкий
Отправлено: 23 Февраля, 2014 - 19:45:17
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Распределённые транзакции не зависят от PHP. От MySQL, кстати, тоже не зависят - так сказано в мануале к оному
Если коротко - если нет жизненной необходимости - не делайте этого.
Суть - синхронно сделать commit уже на двух серверах невозможно. Вообще.
Сервер А сказал commit ok, а сервер B - commit fail - как откатить транзакцию на первом сервере? Потому стараются уменьшить работу последнего, окончательного commit'а введением prepare commit.
Двухфазный коммит: стартует транзакция, делаете всё, что нужно, делаете prepare - если все сервера ответили ok, то делаете commit и надеетесь, что в этот промежуток времени, пока все сервера не закоммитятся, ничего не случится. А если хоть один сервер сказал fail на prepare - откатываете транзакцию на всех серверах.
----- PostgreSQL DBA
caballero
Отправлено: 23 Февраля, 2014 - 21:29:57
Активный участник
Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011 Откуда: Харьков
Помог: 126 раз(а)
проекты где нужны распределенные транзакции редко пишут на PHP
Покинул форум
Сообщений всего: 22
Дата рег-ции: Янв. 2012
Помог: 0 раз(а)
Мелкий пишет:
Распределённые транзакции не зависят от PHP. От MySQL, кстати, тоже не зависят - так сказано в мануале к оному
Если коротко - если нет жизненной необходимости - не делайте этого.
Суть - синхронно сделать commit уже на двух серверах невозможно. Вообще.
Сервер А сказал commit ok, а сервер B - commit fail - как откатить транзакцию на первом сервере? Потому стараются уменьшить работу последнего, окончательного commit'а введением prepare commit.
Двухфазный коммит: стартует транзакция, делаете всё, что нужно, делаете prepare - если все сервера ответили ok, то делаете commit и надеетесь, что в этот промежуток времени, пока все сервера не закоммитятся, ничего не случится. А если хоть один сервер сказал fail на prepare - откатываете транзакцию на всех серверах.
Спасибо большое за краткое описание, ну я так понимаю должен быть какой-то координатор этих действий в двухфазном коммите? Вроде говорили, что по умолчанию есть в данной СУБД, так ли это? (Добавление)
KingStar пишет:
транзакций на PHP нет, можно на MySQL с вызовом через php и передачей параметров, поэтому ищи в сторону MySQL, а через php думаю не составит труда реализовать, если конечно есть знания языка
Спасибо за ответ, я знаю что транзакции в MySQL, просто везде пишут про реализацию этого используя Java и .Net. Главное - это отправная точка, с чего нужно начинать.
Немножко разобрался. Теперь хочу связать эту всю кашу с PHP
caballero
Отправлено: 24 Февраля, 2014 - 10:36:47
Активный участник
Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011 Откуда: Харьков
Помог: 126 раз(а)
в яве есть специальные драйвера для распределенных транзакций. Для тех СУБД которые это поддерживают, разумеется.
Покинул форум
Сообщений всего: 22
Дата рег-ции: Янв. 2012
Помог: 0 раз(а)
Мелкий пишет:
prepare - если все сервера ответили ok, то делаете commit и надеетесь, что в этот промежуток времени, пока все сервера не закоммитятся, ничего не случится. А если хоть один сервер сказал fail на prepare - откатываете транзакцию на всех серверах.
может глупый вопрос,но, на php можно реализовать данный способ? (Добавление)
caballero пишет:
в яве есть специальные драйвера для распределенных транзакций. Для тех СУБД которые это поддерживают, разумеется.
спасибо, учту
Мелкий
Отправлено: 24 Февраля, 2014 - 13:40:30
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Artyom пишет:
может глупый вопрос,но, на php можно реализовать данный способ?
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.