Doctrine инкапсулирует собственный, связанный с драйвером ресурс управления подключением к базе данных внутри его классов Connection. Я говорю о ресурсе, возвращенном, например, mysqli_connect()
. Я не вижу доступа к ресурсу необработанных соединений - нет методов getter, которые я смог найти. Эта сильная инкапсуляция, вероятно, должна быть подсказкой, что я не должен пытаться получить к ней доступ и использовать ее, но, конечно, это именно то, что я хочу сделать.Повторное использование соединения с базой данных, используемое диспетчером сущности доктрины
Не могли бы вы вызвать какие-либо проблемы, если бы я мог отправлять запросы на чтение только с одного и того же соединения? Я не уверен, как работает поток доктрины под капотом. Соединения с базой данных являются работоспособными, и я немного испугался, что могу вскочить и выпустить SQL-запрос в тот момент, когда у доктрины есть несколько многоступенчатых транзакций, которые частично выполняются, и это, очевидно, вызовет проблему. Но с однопоточной природой php я думаю, что есть приличный шанс, что это может быть невозможно на практике, в зависимости от того, как работает доктрина.
Помимо этого, причина, по которой я хочу сделать это, - это производительность. У меня есть другой код, который не написан с помощью доктрины, и он хочет иметь необработанное соединение с базой данных, потому что он использует собственные функции расширения db. Я мог бы просто открыть другое соединение db, но открытие второго соединения имеет значительные последствия для производительности в моем сценарии ... что делает его очень привлекательным, чтобы попытаться повторно использовать соединение доктрин.
доктрина предназначена для абстрагирования базового соединения с базой данных. зачем вы хотите это использовать? просто создайте необработанное соединение – Aris
@Aris Вы прочитали последнюю часть сообщения? Я объяснил, почему. – goat