我正在开发一个插件。我创建了一个API,可以读取和写入DB中的自定义表。可以从N个客户端同时调用此API(这确实发生了)。我注意到在这种情况下会出现问题。举一个具体的例子:
if (is_null($wpdb->get_var("SELECT column FROM my_table_name WHERE condition"))) {
// branch 1
}
else {
// branch 2
}
在分支1中,我天真地假设从DB获得的变量为
NULL
, 但也许这不再是真的,因为它已经被另一个线程改变了。我需要保证,至少在分支1结束之前,这个条件没有改变。
WordPress解决这个问题的方法是什么?信号量、文件锁定、MySQL锁表?还是有更好的解决方案?我在网上搜索了很长时间,但没有找到任何明确的信息。WordPress本身(或主要插件)在这种情况下是如何工作的?