我目前正在处理与Wordpress的web应用程序的实现。
然而,现在,我正面临一个我认为是普遍的问题,每个人试图实现一个wep应用程序与Wordpress。尽管如此,似乎没有人谈论这件事。
这一问题涉及数据的一致性。在查看了这个主题的不同来源并使用Wordpress代码很长一段时间之后,我没有看到任何数据库ACID事务的跟踪,也没有任何其他确保数据一致性的方法。考虑到用户请求可能触发数据库上的多个写操作,这样一个关键问题可能会导致数据不一致,因为在请求处理过程中可能会出现故障,导致部分写入。
即使在Wordpress API函数中,这似乎也会在内部发生。
作为一个例子,让我们以wp_insert_post (这是一个常见的核心API操作)为例。这个函数似乎执行多个写操作,并且它们不会在数据库事务的范围内执行。这在我看来是正确的,因为在我看来,事务生命周期应该在更高的应用程序层进行管理。
但是,即使在更高的层,也不使用任何事务。
更糟糕的是,我看到wp_insert_post隐藏了它在数据库上执行的大多数写调用的返回值(例如将缩略图保存为元数据、类别、标记等)。
这一事实可能会使调用方(例如其他第三方插件或wordpress管理页面本身)认为所有东西都已正确保存到数据库中,而实际上并非如此,因此他们无法正确地处理事务(知道何时提交或回滚)或向用户提供适当的反馈。
我是不是遗漏了什么?如何使数据,至少,最终在Wordpress应用程序中一致?
我们怎样才能确保,一般来说,用Wordpress开发一个web应用程序,不会导致噩梦,试图管理这种数据不一致?
如果能在这方面提供任何帮助,我们将不胜感激。
发布于 2018-01-09 13:17:50
不,你没有遗漏什么。但是,您似乎在用例中使用了错误的“框架”( WordPress没有使用)。你把事情搞混了。你所说的,A.C.I.D.交易,绝不是你所认为的目的。
这两者都可以通过使用WordPress支持…的数据库来实现。用正确的引擎:
有关更多细节,请查看InnoDB锁定。
另一种方法是有硬盘锁(将LOCK
文件写入磁盘),或者,如果您在同一个请求中,则使用软件锁(切换到TRUE
/FALSE
的变量或常量)。第三种选择是在数据库中本地设置锁。
更多的信息在这个答案中在这里的网站。
https://wordpress.stackexchange.com/questions/290445
复制相似问题