Я планирую использовать PHP для подключения к 2 удаленным серверам. Одним из них является база данных MySQL. Другой — сервер очереди заданий.
Для каждого задания, которое я отправляю на сервер очереди заданий, я хочу убедиться, что (точно) 1 запись вставлена в БД MySQL. Я хочу убедиться, что записи базы данных MySQL и выполнение задач очереди заданий синхронизированы на 100%.
Поскольку оба являются удаленными серверами, меня беспокоит, что иногда могут возникнуть проблемы с подключением к одному из серверов (или к обоим).
В моем приложении PHP, как я могу убедиться, что 2 удаленные операции успешно завершены, и откатить все операции, если одна из удаленных операций завершится неудачно? Есть ли какие-либо лучшие практики программирования, которым я должен следовать для такого сценария?
Это звучит как довольно простой 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
}
Других решений пока нет …