如何确保 2 个远程操作成功完成,并在其中 1 个远程操作失败时回滚所有操作?

How to ensure that 2 remote operations complete successfully, and rollback all operations if 1 of the remote operations fails?

我打算使用 PHP 连接到 2 个远程服务器。一个是 MySQL 数据库。另一个是作业队列服务器。

对于我推送到作业队列服务器的每个作业,我想确保(准确地)将 1 条记录插入到 MySQL 数据库中。我想确保 MySQL 数据库记录和作业队列任务执行 100% 同步。

由于两者都是远程服务器,我担心有时其中一台服务器(或两者)可能会出现连接问题。

在我的 PHP 应用程序中,如何确保 2 个远程操作成功完成,并在其中 1 个远程操作失败时回滚所有操作?对于这种情况,我应该遵循任何编程最佳实践吗?

这听起来像是一个非常基本的 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
}