Как можно ускорить скрипт подключения к БД? Салют, ребят, подскажите можно ли переписать скрипт лучше, если это я криворук.
Смотрел скорость исполнения сценария через$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
202 +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 Апр 2024 в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир