对于可能并发写入的临时存储,我应该使用什么结构和数据库存储方法?

时间:2020-05-21 作者:Sarah Lewis

在使用第三方API时,我需要存储一些状态信息来帮助跟踪流程。我想知道我应该把它存放在哪里,怎样存放。

具体地说,我有一个多页重力表单,使用它们提供的挂钩,我在填写第一页后向API提交POST请求,获取唯一ID,然后通过补丁请求将第二页的字段提交给API。(这种看似复杂的流程有很好的理由。)

我有一个用于表单提交的唯一ID,以及一个用于创建并需要更新的API记录的唯一ID。我要寻找的是连接数据库中信息的最佳方式,以便在表单的第二页完成时,我知道应该更新哪个API记录。

我考虑过使用Transients API,因为根据定义,这是一种非常临时的存储需求,但由于数据不能保证在我需要时存在,我认为它不会起作用。

我倾向于使用带有选项API的关联数组(以唯一的表单ID为键)。我担心的是:如果我有几十人甚至数百人同时填写这份表格,那么一个选项是否存在种族状况或类似问题的风险?我是否应该在每次提交表单时将其分为一个选项?或者创建一个类似于Posteta表的单独表?

还是我想得太多了,一个选项中的单个数组就可以了?

1 个回复
最合适的回答,由SO网友:Sarah Lewis 整理而成

我对100名同时访问的用户运行了JMeter负载测试,以查看通过options API将数组写入wp\\U options表是否可行,因为我知道每次访问都需要更新数组。

此测试确认,只有一部分数据库更新按其需要的方式进行,而不会覆盖阵列的其他版本。我预计故障的确切比例会随着负载的变化而变化,但由于我需要可靠的状态信息,任何故障都会使我无法启动。

我接下来的计划是创建一个类似于Posteta表的自定义表,但将我的唯一表单ID和唯一API ID绑定在一起,而不是一个post。

相关推荐

Save URL into database

我提前道歉。我甚至不知道怎么问,问什么,搜索什么。假设用户可以从不同的URL访问我的网站。https://www.mywebsite.com/something1 https://www.mywebsite.com/something2 https://www.mywebsite.com/something3我怎么能把那些“东西”save into DB? 或者以其他方式store 那些“某物”变量。我想有所有尝试访问我的网站的概述。我能做什么?有什么想法吗?