Функции выборки товаров из базы:
function result_to_array($result) {
$res_array = array();
$count = 0;
while( $row = $result->fetch_assoc() ) {
$res_array[$count] = $row;
$count++;
}
return $res_array;
}
function get_product() {
connect_db();
global $mysqli;
$result = $mysqli->query("SELECT *FROM `product` ORDER by `id` DESC");
$result = result_to_array($result);
return $result;
}
На самой странице все товары выводятся циклом foreach:
$products = get_product();
html код
Проблема в том, что страница с товарами открывается ну очень долго, раньше просто на этой же самой странице делал запрос и выводил все через while, по скорости было ощутимо быстрее.
Подскажите, что я делаю не так и почему так медленно работает скрипт?
Ответ
А много ли товаров?
И можно оптимизировать конструкцию, убрав $count
while( $row = $result->fetch_assoc() ) {
$res_array[] = $row;
}
Перед выполнением кода и после выполнения добавьте microtime()
function result_to_array($result) {
$ra_start = microtime();
$res_array = array();
$count = 0;
while( $row = $result->fetch_assoc() ) {
$res_array[$count] = $row;
$count++;
}
$ra_end = microtime();
echo $ra_end - $ra_start;
return $res_array;
}
function get_product() {
$gp_start = microtime();
connect_db();
global $mysqli;
$result = $mysqli->query("SELECT *FROM `product` ORDER by `id` DESC");
$result = result_to_array($result);
$gp_end = microtime();
echo $gp_end - $gp_start;
return $result;
}
На самой странице все товары выводятся циклом foreach:
$products = get_product();
html код:
По результатам сможете увидеть, какой кусок у Вас долго выполняется.
Комментариев нет:
Отправить комментарий