Безопасно ли запускать транзакции MySQL с $wpdb в WordPress?

Насколько я понимаю, глобальный объект $wpdb использует только одно соединение MySQL под капотом (по умолчанию). Поскольку объект является глобальным, любой другой плагин/тема/что угодно, похоже, использует это соединение.

Мой вопрос: безопасно ли использовать транзакции MySQL с этим или другие плагины/WordPress сами по себе могут мешать моим транзакциям?

Чтобы представить, как это может выглядеть:

global $wpdb;
$wpdb->query('START TRANSACTION');


$wpdb->query(...);
$wpdb->query(...);
// ... and so on

if ( $condition ) {
    $wpdb->query('COMMIT'); // commit all queries
} else {
    $wpdb->query('ROLLBACK'); // rollback everything
}
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

PHP по своей природе является однопоточным. Кроме того, транзакция ограничена областью действия соединения, в котором она создана.

Если вы пишете PHP-функцию, которая запускает и фиксирует транзакцию без вызова другого плагина, другой плагин никак не может помешать вашей транзакции. Другие плагины могут быть вызваны WordPress до или после вашей функции, но не во время.

Другие запросы PHP, выполняющиеся одновременно, будут иметь собственное соединение с базой данных (соединения не могут быть разделены между запросами PHP), а транзакции не могут охватывать несколько соединений.

Спасибо!! Я даже не думал об этом.

fabiancdng 30.04.2023 20:27

Другие вопросы по теме