WordPress и многопоточность

Я работаю над плагином. Я создал API, который читает и записывает в пользовательскую таблицу в БД. Этот API можно назвать потенциально из N клиентов одновременно (и это действительно так). Я заметил, что в этом случае возникают проблемы. Чтобы дать конкретный пример:

if (is_null($wpdb->get_var("SELECT column FROM my_table_name WHERE condition"))) { // branch 1 } else { // branch 2 } 

В ветке 1 я невинно предполагаю, что переменная, полученная из БД, равна NULL , но, возможно, это уже не так, потому что она была изменена другим потоком. Мне нужна гарантия, что, по крайней мере до конца ветви 1, это условие не изменилось.

Что такое WordPress-способ решить эту проблему? Семафоры, блокировка файлов, MySQL LOCK TABLE? Или есть лучшие решения? Я долго искал в Интернете, но я не смог найти ничего определенного. Как делает сам WordPress (или основные плагины) в таком случае?

Ваш плагин предназначен для использования другими, или он будет использоваться только на серверах, которыми вы управляете? Если последнее, то может быть несколько способов добиться того, чего вы хотите. Например, расширение Sync . При этом, я думаю, вы могли бы использовать мьютекс или семафор, чтобы установить флаг, который затем можно использовать в ваших функциях чтения / записи.

Если у вас уже есть доступ к memcache, то это может быть легкий способ сделать то же самое, без необходимости установки нового расширения.

В противном случае вы можете использовать блокировку таблицы db, но это кажется очень тяжелым, и я буду беспокоиться о влиянии на производительность базы данных.