Мы используем mysqli в качестве основного подключения к базе данных и думаем о перемещении использовать Doctrine DBAL, который является абстракцией над PDO. Сам PDO - это уровень абстракции базы данных, который предлагает нам больше гибкости.

План состоит в том, чтобы фактически использовать их параллельно при рефакторинге кода, медленно переводя наши текущие запросы на использование DBAL.

Я слышал некоторые опасения от некоторых моих коллег о том, что два соединителя базы данных, один из которых использует mysqli и один PDO, рискуют столкнуться, вызывая возможные ситуации блокировки и т. Д. Но разве это невозможно в сценарии, где у нас есть только mysqli, но несколько процессы запущены? Это действительно проблема?

3
Shadow Apollo 523 20 Дек 2019 в 19:17

2 ответа

Лучший ответ

Вы можете использовать mysqli и PDO в одном скрипте. Также как вы можете создать несколько соединений с одной и той же базой данных, даже если вы используете только один из этих соединителей

У вас всегда есть риск одновременной блокировки соединения. Но это не более рискованно, если использовать несколько разъемов.

5
Bill Karwin 20 Дек 2019 в 16:21

Ну, это оказалось правильным, но проблемы возникают в другом месте. Два отдельных соединения не являются привязанными друг к другу транзакциями. Когда вы начинаете транзакцию с DBAL и вставляете строки с помощью mysqli, вы не можете откатить вставки с DBAL. Это создает проблему, и решение становится непригодным для использования.

0
Shadow Apollo 523 7 Янв 2020 в 06:41