Не уверен, если это уместно, но здесь идет.
Я построил небольшую систему онлайн-бронирования мест в течение дня.
Поскольку я использую базу данных и подключаюсь к ней все время для выполнения некоторых запросов, я создал простой класс, который создает соединение (использует PDO) и запускает запросы (готовит их, запускает их, если возникает ошибка, она управляет и регистрирует ее, и т. Д. ).
Я также часто использую AJAX, поэтому в основном, когда пользователь хочет зарегистрироваться, войти в систему, получить расписание дня, забронировать слот, отменить бронирование и т. Д. Я использую AJAX для загрузки сценария, который проходит процедуру для каждое действие (я назову это сценарием AJAX), и в этот сценарий я включаю соответствующий сценарий, который содержит все необходимые функции (я назову это сценарием функции). Идея состоит в том, что AJAX-скрипт просто получает параметры, вызывает список функций, который на основании результатов возвращает какой-то ответ. Сценарий функции содержит весь код, который создает запросы и получает данные базы данных, делает любые проверки, создает новые объекты, если это необходимо, и т. Д.
То, как я это делал, состояло в том, что в начале сценария AJAX я создаю свой экземпляр класса базы данных, а затем просто передаю его функциям по мере необходимости (в основном потому, что я начал со всего кода в сценарии AJAX, а затем перешел к созданию отдельная функция во втором скрипте и просто оставляя минимальный код, необходимый для руководства действия) …
Поэтому мой вопрос заключается в том, является ли хорошей / лучшей практикой полное удаление экземпляра класса базы данных из сценария AJAX, и вместо этого включение сценария класса базы данных в сценарий функции и просто создание экземпляра внутри каждой функции? Я задаюсь вопросом об идее создания соединений с каждой функцией и последующего их уничтожения (большинство функций маленькие и обычно имеют один или два запроса, а некоторые имеют много, в которых я использую транзакции).
Я также читал об использовании синглтона, но я не уверен, как он будет работать в Интернете. Насколько я понимаю, если на сайт вошли 2 пользователя, и оба пытаются получить расписание, тогда скрипт вызывается один раз для каждого пользователя, делая разное соединение — даже если параметры соединения одинаковы (у меня есть guest_user с выберите / вставьте / обновите привилегии в моей базе данных). Так что даже если бы у меня был синглтон, тогда у меня все равно было бы два отдельных соединения в приведенном выше сценарии, верно? Как бы то ни было, у меня теперь есть два соединения, открытых на 1 секунду, но с изменением, о котором я спрашиваю, у меня будет 10 для каждого пользователя, скажем, (10 вызванных функций) на 100 мс каждый раз … Хорошо это или плохой? Может ли это вызвать проблемы (если я экстраполирую это на реальный мир, скажем, 1000 пользователей, обычно 20-40 одновременно на сайте) …
Что касается безопасности, могут ли эти соединения использоваться для кражи данных, которыми обмениваются (хорошо, это неправдоподобно и на самом деле не проблема, данные относительно безопасны, кроме телефонов, но …)
Задача ещё не решена.
Других решений пока нет …