В чем проблема поиска php-mysql, виснет сайт

267
23 января 2018, 12:57

Написал поиск для сайта, на языке php - бд mySql, сам являюсь фронтенд девелопером, всё работает, но зависает сильно, думаю проблема во множественных запросах в базу, или может надо как то закрывать сессию?

`$link = mysqli_connect('localhost',$user,$psswd,'$local_db');
 $rows2 = mysqli_fetch_assoc(mysqli_query($link,'SELECT `title` FROM 
 `tbl_product` WHERE `product_id` = '.$i));
 $rows3 = mysqli_fetch_assoc(mysqli_query($link,'SELECT `vendor_code` FROM 
 `tbl_product` WHERE `product_id` = '.$i));
 $rows4 = mysqli_fetch_assoc(mysqli_query($link,'SELECT `seo_keywords` FROM 
 `tbl_product` WHERE `product_id` = '.$i));
 $rows5 = mysqli_fetch_assoc(mysqli_query($link,'SELECT `alias` FROM 
 `tbl_product` WHERE `product_id` = '.$i));
 $rows6 = mysqli_fetch_assoc(mysqli_query($link,'SELECT `product_id` FROM 
 `tbl_product` WHERE `product_id` = '.$i));
 $rows7 = mysqli_fetch_assoc(mysqli_query($link,'SELECT `is_public` FROM 
 `tbl_product` WHERE `product_id` = '.$i));`

А также еще одна возможная причина, что фото c ценой приходиться парсить, использую, jquery Ajax и phpQuery, но товаров много.

`<script>
$( '.product_photo' ).each(function() {
var product_index = $(this).attr('photo-index');
var url = $(this).attr('photo-url');
//
$.ajax({
type: 'POST',
url: '/prokladka/search/index.php',
data: 'class='+product_index+'&url='+url,
success: function(data){
  $('.results').append(data);
}
});
//
});
</script>`

Файл обработчик Ajax:

`// incoming vars
 $url = $_POST['url'];
$class = $_POST['class'];
// incoming vars
//
// including lib
include($_SERVER['DOCUMENT_ROOT'].'/prokladka/lib/phpquery-master/phpQuery/phpQuery.php');
// including lib
//
// lets start parsing
$page = file_get_contents($url);
$document = phpQuery::newDocument($page);
//
$img = $document->find('.product-album img')->attr('src');
$price = $document->find('.product-single .price')->html();
$price = trim(preg_replace('~\s+~s', ' ', $price)); 
//
echo "
    <script>
        $(document).ready(function(){
            $('.product_photo_$class').attr('src','$img');
            $('.product_price_$class').html('".$price."');
        });
    </script>
";
// lets start parsing`
Answer 1

mysqli_close ( mysqli $link )

  • закрывает открытое соединение с базой данных. И все данные можно вместить в один запрос

    $rows2 = mysqli_fetch_assoc(mysqli_query($link,' SELECT title,vendor_code,seo_keywords, alias, product_id,is_public FROM tbl_product WHERE product_id = '.$i));

А потом получить поля как удобно. В таблице, как я понимаю, это вообще будет одна строка? Тогда можно вообще упростить до

SELECT * 
FROM  `tbl_product` 
WHERE `product_id` = '.$i
READ ALSO
Шахматная доска на консоли php

Шахматная доска на консоли php

Дано следующее задание:

346
Оптимизация ajax

Оптимизация ajax

Пишу поиск для сайта, приходится парсить фото с страницы товара,

223
codeigniter как развернуть проект [требует правки]

codeigniter как развернуть проект [требует правки]

codeigniter как развернуть проект

234