LiveInternetMail.ru
Форум русской поддержки Joomla!® CMS
28.05.2012, 03:13:14 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 1.7 FAQ Joomla 1.5 FAQ Joomla 1.0 FAQ Правила форума Новости Joomla Войти Регистрация Помощь  
Страниц: 1 2 3 4 5 [6]   Вниз
  Добавить закладку  |  Печать  
Автор Тема: Хаки для убыстрения VirtueMart (уменьшение запросов и т.п.)  (Прочитано 39786 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
yadrinez
Осваиваюсь на форуме
***

Репутация: +9/-0
Offline Offline

Сообщений: 116


« : 26.11.2009, 21:38:07 »

 Предлагаю помещать в эту тему простые хаки для улучшения производительности VirtueMart.
Сам я недавно ковыряюсь в нем.
Сегодня например сделал следующее:
В файле ps_product.php есть функция function get_flypage($product_id),
которая возвращает шаблон товара.
Внутри функции есть запрос от которого я предполагаю можно избавиться, если шаблон для отображения товара используем один.

Первоначальная функция
Код:
function get_flypage($product_id) {


if( empty( $_SESSION['product_sess'][$product_id]['flypage'] )) {
$db = new ps_DB;
$productParentId = (int)$product_id;
do {
$q = "SELECT
                                `#__{vm}_product`.`product_parent_id` AS product_parent_id,
                                `#__{vm}_category`.`category_flypage`
                        FROM
                                `#__{vm}_product`

                        LEFT JOIN `#__{vm}_product_category_xref` ON `#__{vm}_product_category_xref`.`product_id` = `#__{vm}_product`.`product_id`
                        LEFT JOIN `#__{vm}_category` ON `#__{vm}_product_category_xref`.`category_id` = `#__{vm}_category`.`category_id`

                        WHERE `#__{vm}_product`.`product_id`='$productParentId'
                        ";
$productParentId = $db->f("product_parent_id");
$db->query($q);
$db->next_record();
}
while( $db->f("product_parent_id") && !$db->f("category_flypage"));

if ($db->f("category_flypage")) {
$_SESSION['product_sess'][$product_id]['flypage'] = $db->f("category_flypage");
} else {
$_SESSION['product_sess'][$product_id]['flypage'] = FLYPAGE;
}
}
return $_SESSION['product_sess'][$product_id]['flypage'];
}

Функция после переделки
Код:
function get_flypage($product_id) {
$_SESSION['product_sess'][$product_id]['flypage'] = "mypage.tpl";
return $_SESSION['product_sess'][$product_id]['flypage'];
}

Я принудительно задаю шаблон для отображения страницы "mypage.tpl"
Так как на сайте всегда использую только его
Записан
 
Serafimk
Гость
« Ответ #151 : 04.04.2011, 21:28:38 »

здравствуйте, планирую заняться убыстрением своего сайта. подскажите, как сделать чтобы информация о количестве запросов выводилась? Так и не нашел как это правильно сделать. Использую Jommla 1.5.2.0 и VirtueMart 1.1.6. В Joomla включил режим отладки.
Записан
A.Nitro
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 14


« Ответ #152 : 06.04.2011, 15:31:02 »

А как ты ето все определил мне интересно очень))))
Шаблон тяжелый походу вот и тормозит...
js меню + нестандартная увеличивалка картинок.


Определил пейдж спидом!

Я не знаю мождно выкладывать ссылки на свои сайт или нет но расскажу что я делал со своим магазом
Шаблон полностью очищен он лишних неиспользуемых блоков
меню выводиться скриптом и 2 запроса использую
ссs объедены и сжаты и еще в них удалено многое
дальше былы удалены многие запросы как предлагаться выше но не все так как я например использую товары со скидками
Записан
Andrew1110
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 164


« Ответ #153 : 07.04.2011, 16:11:55 »

Информация о профиле
Application afterLoad: 0.002 seconds, 0.53 MB
Application afterInitialise: 0.124 seconds, 6.06 MB
Application afterRoute: 0.124 seconds, 6.06 MB
Application afterDispatch: 0.490 seconds, 8.38 MB
Application afterRender: 0.567 seconds, 9.34 MB
Использование памяти
9843032
18 зарегистрированных запросов

Это при включении режим отладки -отладка системы- да... Я так понимаю это для центральной страницы с категориями. А как получить эту же информацию при загрузке товаров категории? .... и... Это нормальные характеристики? или над ними тоже надо работать?
« Последнее редактирование: 07.04.2011, 16:22:27 от Andrew1110 » Записан
Servelatin
Захожу иногда
**

Репутация: +1/-0
Offline Offline

Сообщений: 23


« Ответ #154 : 03.06.2011, 20:12:59 »

как рыба об лёд...
Joomla 1.5.22 + VM 1.1.8 stable + query cache 1.5 rev374 night
Всё оптимизировано по всем советам и не советам. В базе примерно 50 категорий+500 подкатегорий+7000 конечных категорий (и это я ещё товар не залил..)
Результат: загрузка главной 30 сек.
ИНФОРМАЦИЯ О ПРОФИЛЕ
Application afterLoad: 0.000 seconds, 0.38 MB
Application afterInitialise: 0.046 seconds, 4.32 MB
Application afterRoute: 0.052 seconds, 5.02 MB
Application afterDispatch: 0.087 seconds, 8.60 MB
Application afterRender: 7.256 seconds, 36.57 MB
ИСПОЛЬЗОВАНИЕ ПАМЯТИ 38461616
ЗАРЕГИСТРИРОВАНО ЗАПРОСОВ: 10

Вопрос: Откуда набегают эти 30 секунд и 37мб загрузки ?
Записан
flyingspook
Moderator
*****

Репутация: +91/-12
Offline Offline

Сообщений: 1289


« Ответ #155 : 03.06.2011, 20:18:11 »

Цитировать
Вопрос: Откуда набегают эти 30 секунд и 37мб загрузки ?
смотреть надо в слепую мало что можно сказать
что грузится, что подцеплено
Записан
Servelatin
Захожу иногда
**

Репутация: +1/-0
Offline Offline

Сообщений: 23


« Ответ #156 : 03.06.2011, 20:24:44 »

Да ничего не подцеплено (на мой взгляд)
из модулей:
mod_mainmenu
mod_banners
mod_syndicate
mod_simpleform2
mod_virtuemart
mod_virtuemart_search
mod_virtuemart_featureprod
mod_news_pro_gk4
mod_latestnews

...меню DTree..

вот листинг загрузки главной:

ЗАРЕГИСТРИРОВАНО ЗАПРОСОВ: 10

SELECT *
  FROM jos_session
  WHERE session_id = '3dfa6134addc8af0ff153c2355272fac'
DELETE
  FROM jos_session
  WHERE ( time < '1307115011' )
SELECT *
  FROM jos_session
  WHERE session_id = '3dfa6134addc8af0ff153c2355272fac'
UPDATE jos_session
  SET `time`='1307117711',`userid`='62',`usertype`='Super Administrator',`username`='admin',`gid`='25',`guest`='0',`client_id`='0',`data`='__default|a:9:{s:15:\"session.counter\";i:45;s:19:\"session.timer.start\";i:1307108481;s:18:\"session.timer.last\";i:1307117450;s:17:\"session.timer.now\";i:1307117661;s:24:\"session.client.forwarded\";s:14:\"79.165.177.152\";s:22:\"session.client.browser\";s:100:\"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.71 Safari/534.24\";s:8:\"registry\";O:9:\"JRegistry\":3:{s:17:\"_defaultNameSpace\";s:7:\"session\";s:9:\"_registry\";a:1:{s:7:\"session\";a:1:{s:4:\"data\";O:8:\"stdClass\":0:{}}}s:7:\"_errors\";a:0:{}}s:4:\"user\";O:5:\"JUser\":19:{s:2:\"id\";s:2:\"62\";s:4:\"name\";s:13:\"Administrator\";s:8:\"username\";s:5:\"admin\";s:5:\"email\";s:20:\"admin@buzapchasti.ru\";s:8:\"password\";s:65:\"6f475d31762f94155539c567c51771a2:UYsA3LqCRqDzuq4OhvAH0hzXjaTNBGah\";s:14:\"password_clear\";s:0:\"\";s:8:\"usertype\";s:19:\"Super Administrator\";s:5:\"block\";s:1:\"0\";s:9:\"sendEmail\";s:1:\"1\";s:3:\"gid\";s:2:\"25\";s:12:\"registerDate\";s:19:\"2011-05-24 05:31:23\";s:13:\"lastvisitDate\";s:19:\"2011-06-03 15:49:43\";s:10:\"activation\";s:0:\"\";s:6:\"params\";s:0:\"\";s:3:\"aid\";i:2;s:5:\"guest\";i:0;s:7:\"_params\";O:10:\"JParameter\":7:{s:4:\"_raw\";s:0:\"\";s:4:\"_xml\";N;s:9:\"_elements\";a:0:{}s:12:\"_elementPath\";a:1:{i:0;s:81:\"/home/iamsexru/public_html/buzapchasti.ru/libraries/joomla/html/parameter/element\";}s:17:\"_defaultNameSpace\";s:8:\"_default\";s:9:\"_registry\";a:1:{s:8:\"_default\";a:1:{s:4:\"data\";O:8:\"stdClass\":0:{}}}s:7:\"_errors\";a:0:{}}s:9:\"_errorMsg\";N;s:7:\"_errors\";a:0:{}}s:13:\"session.token\";s:32:\"8b3e4dcaf60c21a513b2ecd84caa7613\";}auth|a:13:{s:11:\"show_prices\";i:1;s:7:\"user_id\";s:2:\"62\";s:8:\"username\";s:5:\"admin\";s:5:\"perms\";s:5:\"admin\";s:10:\"first_name\";N;s:9:\"last_name\";N;s:7:\"country\";s:2:\"US\";s:3:\"zip\";s:0:\"\";s:16:\"shopper_group_id\";s:1:\"5\";s:22:\"shopper_group_discount\";s:4:\"0.00\";s:24:\"show_price_including_tax\";s:1:\"1\";s:21:\"default_shopper_group\";s:1:\"1\";s:22:\"is_registered_customer\";b:1;}cart|a:1:{s:3:\"idx\";i:0;}recent|a:1:{s:3:\"idx\";i:0;}ps_vendor_id|s:1:\"1\";minimum_pov|N;vendor_currency|s:3:\"RUB\";vmMiniCart|b:0;userstate|a:1:{s:10:\"product_id\";i:0;}last_page|s:11:\"shop.browse\";last_browse_parameters|a:7:{s:11:\"category_id\";s:2:\"24\";s:15:\"manufacturer_id\";i:0;s:7:\"keyword\";b:0;s:8:\"keyword1\";s:0:\"\";s:8:\"keyword2\";s:0:\"\";s:8:\"featured\";s:1:\"N\";s:10:\"discounted\";s:1:\"N\";}'
  WHERE session_id='3dfa6134addc8af0ff153c2355272fac'
SELECT a.id, a.title, a.alias, a.title_alias, a.introtext, a.fulltext, a.sectionid, a.state, a.catid, a.created, a.created_by, a.created_by_alias, a.modified, a.modified_by, a.checked_out, a.checked_out_time, a.publish_up, a.publish_down, a.images, a.attribs, a.urls, a.metakey, a.metadesc, a.access, CASE WHEN CHAR_LENGTH(a.alias) THEN CONCAT_WS(':', a.id, a.alias) ELSE a.id END AS slug, CASE WHEN CHAR_LENGTH(cc.alias) THEN CONCAT_WS(":", cc.id, cc.alias) ELSE cc.id END AS catslug, CHAR_LENGTH( a.`fulltext` ) AS readmore, u.name AS author, u.usertype, g.name AS groups, u.email AS author_email, cc.title AS category, s.title AS section, s.ordering AS s_ordering, cc.ordering AS cc_ordering, a.ordering AS a_ordering, f.ordering AS f_ordering
  FROM jos_content AS a
  INNER JOIN jos_content_frontpage AS f
  ON f.content_id = a.id
  LEFT JOIN jos_categories AS cc
  ON cc.id = a.catid
  LEFT JOIN jos_sections AS s
  ON s.id = a.sectionid
  LEFT JOIN jos_users AS u
  ON u.id = a.created_by
  LEFT JOIN jos_groups AS g
  ON a.access = g.id
  WHERE 1
  AND a.access <= 2
  AND a.state >= 0
  ORDER BY  f.ordering
SELECT *, RAND() AS ordering
  FROM jos_banner
  WHERE showBanner = 1
  AND (imptotal = 0 OR impmade < imptotal)
  AND cid = 1
  AND catid = 1
  ORDER BY sticky DESC, ordering
  LIMIT 0, 1
UPDATE jos_banner
  SET impmade = impmade + 1
  WHERE bid = 1
SELECT `cart_content`
  FROM `jos_vm_cart`
  WHERE `user_id`=62
SELECT DISTINCT product_sku
  FROM jos_vm_product
  WHERE (jos_vm_product.product_parent_id='' OR jos_vm_product.product_parent_id='0')
  AND vendor_id='1'
  AND jos_vm_product.product_publish='Y'
  AND jos_vm_product.product_special='Y'
  ORDER BY RAND()
  LIMIT 0, 3
SELECT published
  FROM jos_modules
  WHERE module='mod_virtuemart_cart'


Подкиньте мыслей
Записан
flyingspook
Moderator
*****

Репутация: +91/-12
Offline Offline

Сообщений: 1289


« Ответ #157 : 03.06.2011, 20:32:04 »

Подкиньте мыслей

смотреть шаблон
картинки
скрипты
стили
и все это оптимизировать
Записан
Vadim_Bone
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 41


« Ответ #158 : 03.09.2011, 15:27:13 »

Это какой-то ужас, на магазине около 3-х тыс товаров, но

Информация о профиле
Application afterLoad: 0.005 seconds, 0.39 MB
Application afterInitialise: 0.411 seconds, 4.14 MB
Application afterRoute: 2.904 seconds, 7.33 MB
Application afterDispatch: 8.967 seconds, 19.16 MB
Application afterRender: 19.196 seconds, 28.09 MB
Зарегистрировано запросов: 1708

сделал абсолютно все, что написано на форуме и получил такие космические цифры... даже не знаю что делать...народ, подскажите...
Записан
Arkadiy
Группа развития
*****

Репутация: +244/-5
Offline Offline

Сообщений: 4895


Былененький он зел.


« Ответ #159 : 03.09.2011, 16:46:30 »

Включать отладку и смотреть откуда берутся запросы. По мегабайтам вкладка "сеть" FireBug даст представление.
Записан
vov41k
Захожу иногда
**

Репутация: +0/-1
Offline Offline

Пол: Мужской
Сообщений: 15



« Ответ #160 : 09.09.2011, 15:01:01 »

www.astykzhan.kz Общее количество товаров 25000 ед., время генерации в категории удалось уменьшить до 0,3 сек, при общем кол-ве запросов 26.
КАК? 0_0

У меня на главной 40, просомотр товара 40. просмотр категории 150.

есть ли нормальных кэш для VirtueMart?
кроме qcache?
« Последнее редактирование: 09.09.2011, 16:37:08 от vov41k » Записан
vov41k
Захожу иногда
**

Репутация: +0/-1
Offline Offline

Пол: Мужской
Сообщений: 15



« Ответ #161 : 14.09.2011, 01:18:54 »

В магазине 8000 товаров. около 70 категорий. При выводе 20 товаров в категории генерируется 350-420 запросов. При просмотре товара генерируется около 60 запросов.

Методом научного втыка были проведены следующие изменения.



ps_perm.php

Запрос

строка 35

         
Код:
$db->query('SELECT group_id,group_name,group_level FROM `#__{vm}_auth_group` ORDER BY group_level');

         
ps_product.php

строка 654-656

      
Код:
$q  = "SELECT `product_type_id` FROM `#__{vm}_product_product_type_xref` WHERE ";
$q .= "`product_id`=$product_id";
$db->query($q);

строка 823

      
Код:
$db->query( "SELECT file_id FROM #__{vm}_product_files WHERE file_product_id='$product_id'" );

строка 1033-1035

         
Код:
$q  = "SELECT COUNT(product_id) as num_rows FROM #__{vm}_product WHERE product_parent_id='$pid' ";
$db->query($q);
$db->next_record();

строка 1148-1153

      
Код:
$q = "SELECT #__{vm}_vendor.vendor_name FROM #__{vm}_product, #__{vm}_vendor ";
$q .= "WHERE #__{vm}_product.product_id='$product_id' ";
$q .= "AND #__{vm}_vendor.vendor_id=#__{vm}_product.vendor_id";

$db->query($q);
$db->next_record();

строка 1217-1221

Код:
$q = "SELECT manufacturer_id FROM #__{vm}_product_mf_xref ";
$q .= "WHERE product_id='$product_id' ";

$db->query($q);
$db->next_record();

строка 1239-1244

Код:
$q = "SELECT mf_name,#__{vm}_manufacturer.manufacturer_id FROM #__{vm}_product_mf_xref,#__{vm}_manufacturer ";
$q .= "WHERE product_id='$product_id' ";
$q .= "AND #__{vm}_manufacturer.manufacturer_id=#__{vm}_product_mf_xref.manufacturer_id";

$db->query($q);
$db->next_record();

строка 1577-1579

            
Код:
$q = 'SELECT tax_rate FROM #__{vm}_product, #__{vm}_tax_rate ';
$q .= 'WHERE product_tax_id=tax_rate_id AND product_id='.(int)$product_id;
$db->query($q);

строка 2324-2327

         
Код:
$q = "SELECT amount,is_percent FROM #__{vm}_product,#__{vm}_product_discount ";
$q .= "WHERE product_id='$product_id' AND (start_date<='$starttime' OR start_date=0) AND (end_date>='$endofday' OR end_date=0) ";
$q .= "AND product_discount_id=discount_id";
$db->query( $q );

строка 2339-2340
Код:
                $q = "SELECT product_parent_id FROM #__{vm}_product WHERE product_id=$product_id";
                $db->query($q);

строка 2342-2345

         
Код:
$q = "SELECT amount,is_percent FROM #__{vm}_product,#__{vm}_product_discount ";
$q .= "WHERE product_id='".$db->f("product_parent_id")."' AND (start_date<='$starttime' OR start_date=0) AND (end_date>='$endofday' OR end_date=0) ";
$q .= "AND product_discount_id=discount_id";
db->query( $q );
строка 2645

   
Код:
        $q .= "(#__{vm}_product.product_parent_id='' OR #__{vm}_product.product_parent_id='0') \n";

строка 2763-2772

         
Код:
$q = "SELECT product_name, category_name, c.category_flypage,product_s_desc,product_thumb_image ";
$q .= "FROM #__{vm}_product as p,#__{vm}_category as c,#__{vm}_product_category_xref as cx ";
$q .= "WHERE p.product_id = '$prod_id' ";
$q .= "AND c.category_id = '$category_id' ";
$q .= "AND p.product_id = cx.product_id ";
$q .= "AND c.category_id=cx.category_id ";
$q .= "AND p.product_publish='Y' ";
$q .= "AND c.category_publish='Y' ";
$q .= "LIMIT 0,1";
$db->query( $q );

файл ps_product_attribute.php

строка 263-264

Код:
$q = "SELECT product_id,product_name FROM #__{vm}_product WHERE product_parent_id='$product_id' AND product_publish='Y'" ;
$db->query($q.$q1);

строка 720-722

Код:
$q = "SELECT product_id, attribute, product_parent_id FROM #__{vm}_product WHERE product_id='$product_id'";
$db->query($q);
$db->next_record();
      
строка 725-727

Код:
$q = "SELECT product_id, attribute FROM #__{vm}_product WHERE product_id='$parent_id'";
$db->query($q);
$db->next_record();

строка 809-811

Код:
$q = "SELECT product_id, custom_attribute, product_parent_id FROM #__{vm}_product WHERE product_id='$product_id'";
$db->query($q);
$db->next_record();

строка 814-816
Код:
$q = "SELECT product_id, custom_attribute FROM #__{vm}_product WHERE product_id='$parent_id'";
$db->query($q);
$db->next_record();

файл ps_product_category.php

строка 926-933

Код:
$q = "SELECT category_id, category_thumb_image, category_child_id,category_name FROM #__{vm}_category,#__{vm}_category_xref ";
$q .= "WHERE #__{vm}_category_xref.category_parent_id='$category_id' ";
$q .= "AND #__{vm}_category.category_id=#__{vm}_category_xref.category_child_id ";
$q .= "AND #__{vm}_category.vendor_id='$ps_vendor_id' ";
$q .= "AND #__{vm}_category.category_publish='Y' ";
$q .= "ORDER BY #__{vm}_category.list_order, #__{vm}_category.category_name ASC";
$db->setQuery($q);
$db->query();

строка 1202-1206

Код:
$q = "SELECT category_id, category_description FROM #__{vm}_category ";
$q .= "WHERE category_id='$category_id' ";
$db->setQuery($q);   $db->query();

$db->next_record();
      
строка 1274-1278

Код:
$q = "SELECT category_id, category_name,category_parent_id FROM #__{vm}_category, #__{vm}_category_xref WHERE ";
$q .= "#__{vm}_category_xref.category_child_id='$category_id' ";
$q .= "AND #__{vm}_category.category_id='$category_id'";
$db->setQuery($q);   $db->query();
$db->next_record();

файл product.file_list.php

строка 604-611

Код:
$sql = 'SELECT DISTINCT file_id, file_mimetype, file_title, file_name'
. ' FROM `#__{vm}_product_files` WHERE ';
if( $exclude_filename ) {
$sql .= ' file_title != \''.$exclude_filename.'\' AND ';
}
$sql .= 'file_product_id = \''.$product_id.'\' AND file_published = \'1\' AND file_is_image = \'0\'';
$dbf->setQuery($sql);
$dbf->query();
      
строка 682
      
Код:
$db->query( "SELECT * FROM `#__{vm}_product_files` WHERE `file_product_id`=".intval($pid)." AND `file_is_image`=1 AND `file_published`=1" );

строка 684-685

Код:
$db->query("SELECT product_parent_id FROM #__{vm}_product WHERE product_id=".intval($pid) );
$db->query( "SELECT * FROM `#__{vm}_product_files` WHERE `file_product_id`=".$db->f("product_parent_id")." AND `file_is_image`=1 AND `file_published`=1" );

строка 693

      
Код:
$db->query( "SELECT * FROM `#__{vm}_product_files` WHERE `file_product_id`=".intval($pid)." AND `file_is_image`=0 AND `file_published`=1" );

строка 695

         
Код:
$db->query("SELECT product_parent_id FROM #__{vm}_product WHERE product_id='$pid'");

строка 698

         
Код:
$db->query( "SELECT * FROM `#__{vm}_product_files` WHERE `file_product_id`=".$db->f("product_parent_id")." AND `file_is_image`=0 AND `file_published`=1" );

файл ps_product_type.php

строка 514-515

Код:
$q = "SELECT * FROM #__{vm}_product_product_type_xref WHERE product_id='$product_id'";
$db->query($q);

файл ps_shopper_group.php

строка 372-375

Код:
$q = "SELECT shopper_group_id,shopper_group_discount FROM #__{vm}_shopper_group WHERE ";
$q .= "vendor_id='$vendor_id' AND `default`='1'";
$db->query( $q );
$db->next_record();

файл ps_vendor.php
заменить
строка 441-444

Код:
$q = "SELECT vendor_id, vendor_min_pov,vendor_name,vendor_store_name,contact_email,vendor_full_image, vendor_freeshipping,
vendor_address_1,vendor_address_2, vendor_url, vendor_city, vendor_state, vendor_country, country_2_code, country_3_code,
vendor_zip, vendor_phone, vendor_store_desc, vendor_currency, vendor_currency_display_style,
vendor_accepted_currencies, vendor_address_format, vendor_date_format, state_name
на

      
Код:
$q = "SELECT vendor_id, vendor_currency, vendor_currency_display_style
      

файл shop.product_details.php

строка 83-86

Код:
$q = "SELECT product_sku, related_products FROM #__{vm}_product,#__{vm}_product_relations ";
$q .= "WHERE #__{vm}_product_relations.product_id='$product_id' AND product_publish='Y' ";
$q .= "AND FIND_IN_SET(#__{vm}_product.product_id, REPLACE(related_products, '|', ',' )) LIMIT 0, 4";
$db->query( $q );

файл shop_browse_queries.php

заменить строка 37-39

Код:
$fieldnames = "`product_name`,`products_per_row`,`category_browsepage`,`category_flypage`,`#__{vm}_category`.`category_id`,
`#__{vm}_product`.`product_id`,`product_full_image`,`product_thumb_image`,`product_s_desc`,`product_parent_id`,`product_publish`,`product_in_stock`,`product_sku`,`author`,`location`,`publisher`,`god`,`pages`,`isbn`,`format`,`savepages`,`nomer`,`tip`,`product_url`,
`product_weight`,`product_weight_uom`,`product_length`,`product_width`,`product_height`,`product_lwh_uom`,`product_in_stock`,`product_available_date`,`product_availability`,`#__{vm}_product`.`mdate`, `#__{vm}_product`.`cdate`";

на

Код:
$fieldnames = "`product_name`,`products_per_row`,`category_browsepage`,`category_flypage`,
`#__{vm}_product`.`product_id`,`product_s_desc`,`product_sku`,`author`,`location`,`publisher`,`god`,`pages`,`isbn`,`format`,`savepages`,`nomer`,`tip`
";


В результате:

Категории -  сократились с 350-420 до 120
Просмотр товара - с 60 до 30

Все удаленные запросы лично мне не были нужны, возможно кому-то пригодится.

http://www.onlinedisk.ru/file/363934/

После этого, в категории при переходе на следующую страницу, месяется шаблон сайта на стандартный и:
Код:
    SQL/DB Error -- [User 'ПОЛЬЗОВАТЕЛЬ_БД' has exceeded the 'max_questions' resource (current value: 100)]

    SQL/DB Error -- [User 'ПОЛЬЗОВАТЕЛЬ_БД' has exceeded the 'max_questions' resource (current value: 100)]

Код:
        Ошибка при загрузке модулей:User 'ПОЛЬЗОВАТЕЛЬ_БД' has exceeded the 'max_questions' resource (current value: 100) SQL=SELECT id, title, module, position, content, showtitle, control, params FROM jos_modules AS m LEFT JOIN jos_modules_menu AS mm ON mm.moduleid = m.id WHERE m.published = 1 AND m.access <= 2 AND m.client_id = 0 AND ( mm.menuid = 186 OR mm.menuid = 0 ) ORDER BY position, ordering
        Ошибка при загрузке модулей:User 'ПОЛЬЗОВАТЕЛЬ_БД' has exceeded the 'max_questions' resource (current value: 100) SQL=SELECT id, title, module, position, content, showtitle, control, params FROM jos_modules AS m LEFT JOIN jos_modules_menu AS mm ON mm.moduleid = m.id WHERE m.published = 1 AND m.access <= 2 AND m.client_id = 0 AND ( mm.menuid = 186 OR mm.menuid = 0 ) ORDER BY position, ordering
        Ошибка при загрузке модулей:User 'ПОЛЬЗОВАТЕЛЬ_БД' has exceeded the 'max_questions' resource (current value: 100) SQL=SELECT id, title, module, position, content, showtitle, control, params FROM jos_modules AS m LEFT JOIN jos_modules_menu AS mm ON mm.moduleid = m.id WHERE m.published = 1 AND m.access <= 2 AND m.client_id = 0 AND ( mm.menuid = 186 OR mm.menuid = 0 ) ORDER BY position, ordering
        Ошибка при загрузке модулей:User 'ПОЛЬЗОВАТЕЛЬ_БД' has exceeded the 'max_questions' resource (current value: 100) SQL=SELECT id, title, module, position, content, showtitle, control, params FROM jos_modules AS m LEFT JOIN jos_modules_menu AS mm ON mm.moduleid = m.id WHERE m.published = 1 AND m.access <= 2 AND m.client_id = 0 AND ( mm.menuid = 186 OR mm.menuid = 0 ) ORDER BY position, ordering
        Ошибка при загрузке модулей:User 'ПОЛЬЗОВАТЕЛЬ_БД' has exceeded the 'max_questions' resource (current value: 100) SQL=SELECT id, title, module, position, content, showtitle, control, params FROM jos_modules AS m LEFT JOIN jos_modules_menu AS mm ON mm.moduleid = m.id WHERE m.published = 1 AND m.access <= 2 AND m.client_id = 0 AND ( mm.menuid = 186 OR mm.menuid = 0 ) ORDER BY position, ordering
        Ошибка при загрузке модулей:User 'ПОЛЬЗОВАТЕЛЬ_БД' has exceeded the 'max_questions' resource (current value: 100) SQL=SELECT id, title, module, position, content, showtitle, control, params FROM jos_modules AS m LEFT JOIN jos_modules_menu AS mm ON mm.moduleid = m.id WHERE m.published = 1 AND m.access <= 2 AND m.client_id = 0 AND ( mm.menuid = 186 OR mm.menuid = 0 ) ORDER BY position, ordering
        Ошибка при загрузке модулей:User 'ПОЛЬЗОВАТЕЛЬ_БД' has exceeded the 'max_questions' resource (current value: 100) SQL=SELECT id, title, module, position, content, showtitle, control, params FROM jos_modules AS m LEFT JOIN jos_modules_menu AS mm ON mm.moduleid = m.id WHERE m.published = 1 AND m.access <= 2 AND m.client_id = 0 AND ( mm.menuid = 186 OR mm.menuid = 0 ) ORDER BY position, ordering
        Ошибка при загрузке модулей:User 'ПОЛЬЗОВАТЕЛЬ_БД' has exceeded the 'max_questions' resource (current value: 100) SQL=SELECT id, title, module, position, content, showtitle, control, params FROM jos_modules AS m LEFT JOIN jos_modules_menu AS mm ON mm.moduleid = m.id WHERE m.published = 1 AND m.access <= 2 AND m.client_id = 0 AND ( mm.menuid = 186 OR mm.menuid = 0 ) ORDER BY position, ordering


Записан
skyscraper
Давно я тут
****

Репутация: +42/-2
Offline Offline

Сообщений: 265



« Ответ #162 : 15.09.2011, 19:01:50 »

vov41k в shop_browse_queries.php лишку убрал, внимательнее читай свои нужные поля =)

пс: не помню писали хак про картинки, но он очень актуален, при входе в категорию картинки обрабатывает image tag и у многих они появляются по очереди, поэтому надо в admin/com_virtuemart/html/shop.browse найти и заменить следующие поля с product_thumb_image
Цитировать
        if( $db_browse->f("product_thumb_image") ) {
            $product_thumb_image = $db_browse->f("product_thumb_image");
      }
      
      if( $product_thumb_image ) {
         if( substr( $product_thumb_image, 0, 4)!= "http" ) {
            if(PSHOP_IMG_RESIZE_ENABLE == '1') {
               $product_thumb_image = $mosConfig_live_site."/components/com_virtuemart/shop_image/product/".$product_thumb_image;
            }
            elseif( !file_exists( IMAGEPATH."product/".$product_thumb_image )) {
                    $product_thumb_image = VM_THEMEURL.'images/'.NO_IMAGE;
                }
         }
      }
      else {
         $product_thumb_image = VM_THEMEURL.'images/'.NO_IMAGE;
      }

      // Get the full image path, or URL if set, or the no_image
      if( $db_browse->f("product_full_image") ) {
         $product_full_image = $db_browse->f("product_full_image");
      } elseif( $product_parent_id != 0 ) {
         $product_full_image = $dbp->f("product_full_image"); // Use product_full_image from Parent Product
      }
      else {
         $product_full_image = VM_THEMEURL . 'images/' . NO_IMAGE;

         // Get the size information for the no_image
         if( file_exists( VM_THEMEPATH . 'images/' . NO_IMAGE ) ) {
            $full_image_info = getimagesize( VM_THEMEPATH . 'images/' . NO_IMAGE );
            $full_image_width = $full_image_info[0]+40;
            $full_image_height = $full_image_info[1]+40;
         }
      }

      // Get image size information and add the full URL
      if( substr( $product_full_image, 0, 4)!= 'http' ) {
         // This is a local image
         if( file_exists( IMAGEPATH . 'product/' . $product_full_image ) ) {
            $full_image_info = getimagesize( IMAGEPATH . 'product/' . $product_full_image );
            $full_image_width = $full_image_info[0]+40;
            $full_image_height = $full_image_info[1]+40;
         }
   
         $product_full_image = IMAGEURL . 'product/' . $product_full_image;
      } elseif( !isset( $full_image_width ) || !isset( $full_image_height ) ) {
         // This is a URL image
         $full_image_info = getimagesize( $product_full_image );
         $full_image_width = $full_image_info[0]+40;
         $full_image_height = $full_image_info[1]+40;
      }
Записан
askhab
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 43


« Ответ #163 : 11.10.2011, 15:26:39 »

Использовал хак hawordа не помогло.
Вот что происходит:

Информация о профиле
Application afterLoad: 0.000 seconds, 0.25 MB
Application afterInitialise: 0.058 seconds, 2.38 MB
Application afterRoute: 0.082 seconds, 3.60 MB
Application afterDispatch: 0.119 seconds, 5.26 MB
Application afterRender: 5.960 seconds, 13.53 MB
Использование памяти
14262040
Зарегистрировано запросов: 2101

У меня около 8 тыс товаров. Категории вложены до 5 подкатегорий.

все запросы генерит mod_product_categories, если его отключить вот что происходит:

Информация о профиле
Application afterLoad: 0.000 seconds, 0.25 MB
Application afterInitialise: 0.025 seconds, 2.38 MB
Application afterRoute: 0.048 seconds, 3.60 MB
Application afterDispatch: 0.084 seconds, 5.26 MB
Application afterRender: 0.786 seconds, 8.47 MB
Использование памяти
8948864
Зарегистрировано запросов: 175

Прям райское наслаждение)). Нр убрать никак не могу, так как не представляю как клиент будет искать например процессор, если вложенность  такая   Компьютерная техника - Комплектующие ПК - Процессоры  - Процессоры :: Процессоры Intel  - Процессоры Intel Core i7/i5/i3/Pentium Socket 1155

что можно сделать, посоветуйте, пожалуйста.
Записан
Arkadiy
Группа развития
*****

Репутация: +244/-5
Offline Offline

Сообщений: 4895


Былененький он зел.


« Ответ #164 : 11.10.2011, 19:16:51 »

Использовать другой модуль категорий, тут есть неплохие, например danik.html делал такой.
Записан
zlodey87
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 2


« Ответ #165 : 04.11.2011, 08:28:36 »

не легче самому написать запрос и выдернуть опубликованные категории и подкатегории, потом у каждой категории задать свою ссылку
Записан
DiffuSer
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 38


« Ответ #166 : 08.11.2011, 12:19:33 »

Подскажите, а хак haword'а подходит для 1.1.9? И не режет ли он какой-либо функционал?
Записан
Eduard
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Сообщений: 45


« Ответ #167 : 11.11.2011, 10:59:08 »

Вот, что было сделано мной для оптимизации.
Для начала сел и проанализировал, что используется, а что - нет и не будет. И отсюда начал плясать.
Версия вирта 1.9
В магазине около 250 категорий. Сейчас товаров около 3 тыс, планируется до 7-8 тыс.

Вот такие допущения были мной приняты:
1. Дочерние товары не используются
2. Свойства и типы товаров не используются
3. Не используются похожие товары
4. Не используется расчет налогов
5. Не используются производители
6. Файлы и дополнительные картинки на странице категории не выводятся
7. Рейтинг товаров нам не нужен на страницах категории (всё равно им никто не пользуется)

Для начала убираем нафиг вывод картинок в тегах: echo ps_product::image_tag в файле browse_x. Это уже дает результат, а затем начинаем копать файл shop.browse.php

Комментим строки 161-169:
Код:
$db->query( "SELECT manufacturer_id, mf_name, mf_desc FROM #__{vm}_manufacturer WHERE manufacturer_id='$manufacturer_id'");
        $db->next_record();
        $mainframe->setPageTitle( $db->f("mf_name") );

        $browsepage_lbl = shopMakeHtmlSafe( $db->f("mf_name") );
        $tpl->set( 'browsepage_lbl', $browsepage_lbl );
        $browsepage_lbltext = $db->f("mf_desc");
        $tpl->set( 'browsepage_lbltext', $browsepage_lbltext );
        $browsepage_header = $tpl->fetch( 'browse/includes/browse_header_manufacturer.tpl.php' );

То же самое 412-414
Код:
$files = ps_product_files::getFilesForProduct( $db_browse->f('product_id') );
        $products[$i]['files'] = $files['files'];
        $products[$i]['images'] = $files['images'];

Комментим строку 433
Код:
$product_rating = ps_reviews::allvotes( $db_browse->f("product_id") );

И нужно закомментировать ненужные переменные со строк 457-485.

Комментим строки 510-511
Код:
$recent_products = $ps_product->recentProducts(null,$tpl->get_cfg('showRecent', 5));
    $tpl->set('recent_products',$recent_products);

Ещё есть смысл поиграть с выводом и расчетом прайса, но туда я пока не добрался

До проведения оптимизации число запросов было: 652 (при выводе 20 товаров на страницу).
После проведения: 104
До оптимизации: 25Mb оперативки
После: 19Mb

Взято тут.
Записан
Amid1210
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 36


« Ответ #168 : 10.03.2012, 20:48:59 »

Это какой-то ужас, на магазине около 3-х тыс товаров, но

Информация о профиле
Application afterLoad: 0.005 seconds, 0.39 MB
Application afterInitialise: 0.411 seconds, 4.14 MB
Application afterRoute: 2.904 seconds, 7.33 MB
Application afterDispatch: 8.967 seconds, 19.16 MB
Application afterRender: 19.196 seconds, 28.09 MB
Зарегистрировано запросов: 1708

Где это можно проверить, подскажите? это сайт или прога?
Записан
danik.html
Практически профи
*******

Репутация: +306/-3
Offline Offline

Пол: Мужской
Сообщений: 2985



« Ответ #169 : 10.03.2012, 21:07:40 »

Amid1210, включите режим отладки (debug) в настройках Joomla. Отладочная инфа появится на сайте внизу страницы.
Записан
openx
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 16


« Ответ #170 : 24.03.2012, 11:17:12 »

1.1.19 все перепробывал дабы поднять скорость вывода страниц - все впустую. И тут - в админке включив gzip сжатие - даже визуально заметил ускорение раз в 20 минимум, все стало открываться влёт!

Главная страница

Информация о профиле
Application afterLoad: 0.002 seconds, 0.11 MB
Application afterInitialise: 0.036 seconds, 0.62 MB
Application afterRoute: 0.040 seconds, 0.82 MB
Application afterDispatch: 0.078 seconds, 1.30 MB
Application afterRender: 0.223 seconds, 2.58 MB
Использование памяти
2763532
Зарегистрировано запросов: 354

ну и все остальные +/- в том же районе
Записан
Plavic
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 1


« Ответ #171 : 24.03.2012, 16:10:23 »

Здравствуйте.
Проделывал данные модификации - сайт ускорился.

Но тут хостер вчера прислал сообщение:

В вашем аккаунте зафиксировано превышение квоты
на загрузку сервера баз данных.
База данных, превышающая квоту:  gb_kupic1

Параметры запроса, вызывающего проблему:
(приводятся параметры одного из запросов)

Время исполнения, секунд   - 17
Кол-во просмотренных строк - 6206
Запрос:
-------
use gb_kupic1;
SET timestamp=1332493313;
select * from ( SELECT DISTINCT `product_name`, `product_desc`, `default`,
`shopper_group_id`, `products_per_row`,`category_browsepage`,`category_flypage`,
`jos_vm_category`.`category_id`,
            `jos_vm_product`.`product_id`,`product_full_image`,`product_thumb_image`,
`product_s_desc`,`product_parent_id`,`product_publish`,`product_in_stock`,
`product_sku`, `product_url`,
            `product_weight`,`product_weight_uom`,`product_length`,`product_width`,
`product_height`,`product_lwh_uom`, `product_available_date`,`product_availability`,
`jos_vm_product`.`mdate`, `jos_vm_product`.`cdate` FROM (`jos_vm_product`,
`jos_vm_category`, `jos_vm_product_category_xref`,`jos_vm_shopper_group`)
WHERE (`jos_vm_product_category_xref`.`product_id`=`jos_vm_product`.`product_id`
OR `jos_vm_product_category_xref`.`product_id`=`jos_vm_product`.`product_parent_id`)
 AND `jos_vm_product_category_xref`.`category_id`=`jos_vm_category`.`category_id`
 AND `jos_vm_product_category_xref`.`category_id`=31
 AND `product_publish`='Y'
 AND `category_publish`='Y'  ) as jos_vm_product LEFT JOIN `jos_vm_product_price`
ON (`jos_vm_product`.`product_id` = `jos_vm_product_price`.`product_id`)
 WHERE ((`jos_vm_product`.`product_id`=`jos_vm_product_price`.`product_id`
AND `jos_vm_product`.`shopper_group_id`=`jos_vm_product_price`.`shopper_group_id`)
OR `jos_vm_product_price`.`product_id` IS NULL)
 AND `jos_vm_product`.`default` = 1
 AND `product_parent_id`=0
 GROUP BY `jos_vm_product`.`product_sku`
 ORDER BY `jos_vm_product`.`product_name` ASC LIMIT 0, 20;
-------

ВАЖНО: ключевой параметр - количество просмотренных
строк, а не время исполнения запроса (время
роли не играет).

Если вы хотите продолжать пользоваться нашими услугами,
вам необходимо в короткий срок решить проблему.
Ваш аккаунт или БД может быть заблокированы, так как
подобная нагрузка может вызывать перегрузку сервера баз данных
и отказ в обслуживании для других клиентов.



Что делать?) Помогите.
Записан
dreamer85
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 17


« Ответ #172 : 29.04.2012, 17:01:23 »

в общем заметил  такую особенность до отключении функции отображения колличества товаров в скобках рядом с категорией колличество запросов было
Информация о профиле
Application afterLoad: 0.003 seconds, 0.52 MB
Application afterInitialise: 0.152 seconds, 4.98 MB
Application afterRoute: 0.167 seconds, 5.41 MB
Application afterDispatch: 1.154 seconds, 11.88 MB
Application afterRender: 4.562 seconds, 14.20 MB
Использование памяти
14986756
Зарегистрировано запросов: 2595

после отключения стало

Информация о профиле
Application afterLoad: 0.046 seconds, 0.52 MB
Application afterInitialise: 0.957 seconds, 4.98 MB
Application afterRoute: 1.052 seconds, 5.41 MB
Application afterDispatch: 2.665 seconds, 11.35 MB
Application afterRender: 12.132 seconds, 13.32 MB
Использование памяти
14057168
Зарегистрировано запросов: 23
Записан
uamobile
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 20


« Ответ #173 : 24.05.2012, 15:05:51 »

гляньте пожалуйста http://uamobile.com.ua/ , отладка системы включена, формируется оч. много запросов, хаки от haword сделал, вознаграждение гарантирую )), заранее спасибо
Записан
Servelatin
Захожу иногда
**

Репутация: +1/-0
Offline Offline

Сообщений: 23


« Ответ #174 : 24.05.2012, 15:15:07 »

гляньте пожалуйста http://uamobile.com.ua/ , отладка системы включена, формируется оч. много запросов, хаки от haword сделал, вознаграждение гарантирую )), заранее спасибо

Юзай eaccelerator в связке с memcached.
Удали лишнее из шаблонов.
Записан
uamobile
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 20


« Ответ #175 : 24.05.2012, 15:24:21 »

в этом не очень, можно подробней
Записан
Servelatin
Захожу иногда
**

Репутация: +1/-0
Offline Offline

Сообщений: 23


« Ответ #176 : 24.05.2012, 16:01:44 »

eaccelerator - кэширование php
memcached - кэширование данных

Устанавливается на сервак. Соответственно FAQ ищешь для нужной оси.
Для примера, у меня 45000 позиций в магазине, не лагает.
Записан
uamobile
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 20


« Ответ #177 : 24.05.2012, 16:04:55 »

eaccelerator - кэширование php
memcached - кэширование данных

Устанавливается на сервак. Соответственно FAQ ищешь для нужной оси.
Для примера, у меня 45000 позиций в магазине, не лагает.
так ведь сайт на хостинге, лагов нет, просто кол-во запросов большое
Записан
Servelatin
Захожу иногда
**

Репутация: +1/-0
Offline Offline

Сообщений: 23


« Ответ #178 : 24.05.2012, 16:11:00 »

так ведь сайт на хостинге, лагов нет, просто кол-во запросов большое
1) Хостинг Ваш можно не хило ускорить, если конечно есть права доступа.
2) Я не наблюдаю чтобы твой сайт тормозил и долго выдавал страницы.
3) Быстрее быстрого не будет.
Записан
uamobile
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 20


« Ответ #179 : 24.05.2012, 19:53:38 »

1) Хостинг Ваш можно не хило ускорить, если конечно есть права доступа.
2) Я не наблюдаю чтобы твой сайт тормозил и долго выдавал страницы.
3) Быстрее быстрого не будет.
прав доступа на такое нету, смущает кол-во запросов большое, спасибо. буду пытаться оптимизировать еще шаблон.
Записан
Страниц: 1 2 3 4 5 [6]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Рейтинг@Mail.ru Rambler Top100 Powered by SMF 1.1.16 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet