我计划使用PHP连接到2个远程服务器。一个是MySQL数据库。另一个是作业队列服务器。
对于我推送到作业队列服务器的每个作业,我想确保将(确切地)1条记录插入到MySQL DB中。我想确保MySQL DB记录和作业队列任务执行是100%同步。
由于两者都是远程服务器,我担心有时可能会对其中一台服务器(或两者)产生连接问题。
在我的PHP应用程序中,如何确保2个远程操作成功完成,如果其中一个远程操作失败,则回滚所有操作?对于这种情况,我应该遵循哪些编程最佳实践?
答案 0 :(得分: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
}