Как можно ускорить скрипт подключения к БД? Салют, ребят, подскажите можно ли переписать скрипт лучше, если это я криворук.
Смотрел скорость исполнения сценария через$start = microtime(true);
//code_here
echo (microtime(true) - $start).' сек.';
И обнаружил, что 75% времени сжирает этот кусок кода$db = new Database('localhost','devbase','developer','pass');
Пример конструктора и одного из методов отвечающих за удалениеclass Database {
private $host;
private $dbName;
private $user;
private $pass;
private $DBH;
function __construct($host,$dbname,$user,$pass) {
$this->host = $host;
$this->dbname = $dbname;
$this->user = $user;
$this->pass = $pass;
$this->DBH = new PDO("mysql:host=$this->host;dbname=$this->dbname",$this->user,$this->pass);
}
function delete($tableName, $conditions, $priority = '') {
$query = $this->DBH->prepare("DELETE $priority FROM $tableName WHERE $conditions");
return $result = $query->execute();
$query = null;
$this->DBH = null;
}
}
Какая сейчас логика:
1. При запросе страницы всегда создается этот объект т.к. всегда идёт запрос к БД
2. Далее в скрипте 1 или несколько раз идёт запрос по типу $db->select('phone, address','clients WHERE id=5567');
3. В общем эта часть, где даже десяток раз подобным образом идёт запрос к БД на вывод данных занимает около 25% времени работы скрипта вместе со всей остальной логикой отрисовки.
На данный момент с приложением работает менее 10 человек, в дальнейшем кол-во одномоментно работающих людей будет несколько сотен.
Специфика работы такая, что иногда требуется открыть с пару десятков страниц, а если это делают несколько человек одномоментно, то приходится ждать 10-15с пока всё откроется и отрисуется.
В общем не комильфо, и было бы круто разом на несколько десятков процентов увеличить скорость работы скрипта.
Время затрачиваемое на создание этого объекта около 0,24 сек., при общем времени на вывод страницы 0,3 сек. В масштабах 1 человека экономия на спичках, в масштабах сотен уже нет.

21 Авг 2019 в 07:03
182 +1
0
Ответы
1

Для ускорения скрипта подключения к БД можно использовать следующие подходы:

Попробуйте использовать долгосрочные подключения к БД (persistent connections), чтобы избежать создания нового соединения каждый раз при запросе страницы. Для этого можно добавить параметр PDO::ATTR_PERSISTENT в конструкторе PDO:$this->DBH = new PDO("mysql:host=$this->host;dbname=$this->dbname", $this->user, $this->pass, array(PDO::ATTR_PERSISTENT => true));Используйте подготовленные запросы (prepared statements) для улучшения производительности запросов к БД. Вместо выполнения запроса напрямую, используйте подготовленный запрос с параметрами:$query = $this->DBH->prepare("SELECT phone, address FROM clients WHERE id = :id");
$query->bindParam(':id', $yourId);
$query->execute();

Попробуйте оптимизировать структуру таблиц в БД, добавив индексы, чтобы ускорить выполнение запросов.

Избегайте создания лишних объектов и закрытия соединения с БД после каждого запроса. Можно оставлять соединение открытым в течение жизни скрипта.

При необходимости можно использовать кэширование запросов или результатов запросов, чтобы уменьшить количество запросов к БД.

Эти подходы помогут оптимизировать скорость работы скрипта и ускорить выполнение запросов к базе данных.

20 Апр в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 588 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир