Как обеспечить успешное завершение двух удаленных операций и откат всех операций, если одна из удаленных операций завершилась неудачно?

Я планирую использовать PHP для подключения к 2 удаленным серверам. Одним из них является база данных MySQL. Другой — сервер очереди заданий.

Для каждого задания, которое я отправляю на сервер очереди заданий, я хочу убедиться, что (точно) 1 запись вставлена ​​в БД MySQL. Я хочу убедиться, что записи базы данных MySQL и выполнение задач очереди заданий синхронизированы на 100%.

Поскольку оба являются удаленными серверами, меня беспокоит, что иногда могут возникнуть проблемы с подключением к одному из серверов (или к обоим).

В моем приложении PHP, как я могу убедиться, что 2 удаленные операции успешно завершены, и откатить все операции, если одна из удаленных операций завершится неудачно? Есть ли какие-либо лучшие практики программирования, которым я должен следовать для такого сценария?

0

Решение

Это звучит как довольно простой AND вариант использования. Поскольку вы работаете в PHP, вы не беспокоитесь об асинхронных вызовах или ожиданиях времени ожидания. Чтобы псевдокодировать это:

Start Transaction1
... do stuff... //transaction 1 still open, no commit
Start Transaction2
... do more stuff...
If (Transaction1 success && Transaction2 success) {
commit Transaction1
commit Transaction2
} else {
rollback Transaction1
rollback Transaction2
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]