如何确保 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
}
我打算使用 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
}