Я пишу полупростой класс-оболочку базы данных и хочу иметь метод выборки, который работал бы автоматически: он должен подготавливать каждый отдельный оператор только в первый раз и просто связывать и выполнять запрос на последовательных звонки.
Думаю, главный вопрос заключается в следующем: Как работает повторная подготовка того же оператора MySql, сможет ли PDO волшебным образом распознать оператор (так что мне не нужно) и прервать операцию?
Если нет, я планирую добиться этого, создав уникальный ключ для каждого отдельного запроса и сохранив подготовленные операторы в частном массиве в объекте базы данных - под его уникальным ключом. Я планирую получить ключ массива одним из следующих способов (ни один из которых мне не нравится). В порядке предпочтения:
- попросите программиста передать дополнительный, всегда один и тот же параметр при вызове метода - что-то вроде
basename(__FILE__, ".php") . __LINE__
(этот метод будет работать, только если наш метод вызывается в цикле - в большинстве случаев эта функциональность необходима) - попросите программиста передать совершенно случайную строку (скорее всего, сгенерированную заранее) в качестве дополнительного параметра
- использовать сам переданный запрос для генерации ключа - получение хэша запроса или что-то подобное
- добиться того же, что и в первой пуле (выше), вызвав
debug_backtrace
Есть ли у кого-нибудь подобный опыт? Хотя система, над которой я работаю, действительно заслуживает некоторого внимания к оптимизации (она довольно большая и растет с каждой неделей), возможно, я ни о чем не беспокоюсь, и в том, что я делаю, нет никакого выигрыша в производительности. я делаю?