Я нахожусь в написании API для своего сайта, а также довольно большой класс для обработки всех запросов API.Неуправляемые соединения mysql замедляют работу скриптов?
Большинство страниц, если не все, все страницы на сайте отправят хотя бы один запрос на загрузку api. Важнейшим приоритетом для этого сайта является эффективность и, следовательно, очень быстрая обработка серверов.
Поэтому я ищу немного советов, когда дело доходит до классов и некоторых функций PHP.
Во-первых, похоже, что класс, который я пишу, вероятно, окажется около 3000 строк кода. Если это инициализировано на каждой странице, игнорируя тот факт, что на одну страницу будут использоваться только одна или две функции в классе, это сделает API намного медленнее? Должен ли я искать отдельные файлы с расширениями для класса для каждого метода класса?
Во-вторых, у меня есть все мои подключения к различным базам данных в отдельных файлах в каталоге. В каждом соединении есть функция mysql_pconnect(). На данный момент я требую только эти файлы, когда это необходимо. Поэтому, если для этого метода требуется подключение к базе данных x, я просто поставлю запрос (соединение ...) в метод. Неплохо ли включать файлы в класс?
Я спрашиваю, потому что единственное другое решение состоит в том, чтобы потребовать все соединения в верхней части страницы, чтобы класс мог получить к ним доступ, не требуя их для каждого метода. Вот почему я хотел бы знать, обладает ли сразу несколько соединений, даже если они не используются, является ли налогообложение на сервере?
Так три вопроса: действительно
- ли инициируя большой класс в начале каждой страницы замедлить время выполнения сценария, даже если используется только один метод класса? Именно поэтому люди используют класс класса extends class?
- Неправильно ли «требовать()» файлы внутри класса?
- Неужели неиспользуемые подключения к базе данных mysql замедляют работу сценария?
Благодарим вас за ответ. Я не совсем понимаю, что вы подразумеваете под непреднамеренными тупиками. Не могли бы вы объяснить мне немного подробнее? –
Хорошо. выполняется какой-то скрипт, начинается транзакция, устанавливается несколько блокировок, а затем прерывается по любой причине. Если он использует постоянное соединение с БД, это соединение остается в живых, даже несмотря на то, что сценарий умер. Позже, другому скрипту присваивается это соединение, он запускает свои собственные операции с базами данных, запускает транзакции, получает блокировки и т. Д. Поскольку этот новый скрипт не знает, что произошло раньше, очень легко начать запрашивать блокировки (явно или иначе), которые покрыты действиями старого мертвого сценария, и теперь вы застряли. –
Хорошо, я собираюсь переписать мой файл class.mysql.php, который фактически является библиотекой функций sql, чтобы значительно ускорить выполнение запросов. Что бы вы предложили мне реализовать в этом классе для предотвращения взаимоблокировок? попробуй поймать..? Хотя, это не будет пытаться повторить попытку, если он потерпит неудачу. Есть ли у вас какие-то мысли по моим другим вопросам выше? –