Скрипт магазина для вашего бизнеса

PHP скрипт интернет-магазина

ShopCMS.Ru

Профессиональный скрипт интернет-магазина

ShopCMS – быстрый и удобный скрипт интернет-магазина!
Всё самое лучшее создано для Вас и Ваших покупателей!
Главная Новости Купить Хостинг Клиентам Услуги Файлы Контакты Форум

Ускорение вставки товаров

Обсуждение вопросов связаных с ошибками и неточностями системы.

Ускорение вставки товаров

Сообщение designdroll » 08 окт 2013, 23:05

Здравствуйте. Недавно прочитал на форуме (сейчас не могу найти где), что при сохранении товаров скрипт делает много запросов в базу на каждое поле, вместо того чтобы сохранить все поля в одном запросе. Тогда я написал в техподдержку, мне это исправили, но я сдуру переустановил магазин, и теперь вот не знаю, можно ли писать в техподдержку чтобы еще раз поправили? Просто не хочется лишний раз писать однотипные письма, может у кого-то есть нужный файлик с этой функцией? (у меня Vip версия)
designdroll
Новичок
 
Сообщения: 6
Зарегистрирован: 08 окт 2013, 22:49

Re: Ускорение вставки товаров

Сообщение pupkin » 09 окт 2013, 11:16

"товара" или "товаров"? Это две большие разницы. Для "товаров" я исправления не встречал, но кривой код там критичен только если совсем уж много товаров на страницу сделать. При штатных двадцати оно не заметно. А для "товара" поищите на форуме поиском что-то про функцию "update_pCount", именно ее надо переписать и решение тут было.
pupkin
Активист
 
Сообщения: 15
Зарегистрирован: 08 окт 2013, 22:57

Re: Ускорение вставки товаров

Сообщение pupkin » 12 окт 2013, 20:10

Что-то я не нашел. Хотя и странно.
=============================
Дополнение резко сокращает количество SQL-запросов при сохранении настроек товаров и категорий


Установка:

В файле category_functions.php

1. в функции update_psCount

строку

Код: Выделить всё
update_pCount($parent);


заменяем на

Код: Выделить всё
update_pCount_new($parent);


2. куда-нибудь рядом добавляем две функции

Код: Выделить всё
function update_sCount_new($parent, $counts = array())
{
global $mc;
foreach (array_keys ($mc,(int)$parent) as $val)
    {
    $counts[$val]['subcats'] = count(array_keys($mc, $val));
    $counts[$val]['admin_count'] = 0;
    $counts[$val]['customer_count'] = 0;
    if ($counts[$val]['subcats']) $counts = update_sCount_new($val,$counts);
    }
return $counts;
}

function update_pCount_new($parent)
{
global $fc;
$qstr = array(
    "SELECT categoryID, COUNT(*) AS admcount, COUNT(NULLIF(enabled,0)) AS count FROM ".PRODUCTS_TABLE." GROUP BY categoryID",
    "SELECT pc.categoryID, COUNT(*) AS admcount, COUNT(NULLIF(enabled,0)) AS count FROM ".CATEGORIY_PRODUCT_TABLE." AS pc JOIN ".PRODUCTS_TABLE." USING (productID) GROUP BY pc.categoryID");
$counts = update_sCount_new($parent);
foreach ($qstr as $str)
    {
    $data = db_query($str);
    while ($row=db_fetch_assoc($data))
        {
        $categoryID = (int)$row['categoryID'];
        while ($categoryID)
            {
            $counts[$categoryID]['admin_count'] += (int)$row['admcount'];
            $counts[$categoryID]['customer_count'] += (int)$row['count'];
            $categoryID = $fc[$categoryID]['parent'];
            }
        }
    }
$data = db_query("SELECT categoryID, subcount, products_count, products_count_admin FROM ".CATEGORIES_TABLE);
while ($row = db_fetch_assoc($data))
    {
    $categoryID = (int)$row['categoryID'];
    if ((int)$row['subcount'] != $counts[$categoryID]['subcats'] || (int)$row['products_count'] != $counts[$categoryID]['customer_count'] || (int)$row['products_count_admin'] != $counts[$categoryID]['admin_count'])
        db_query("UPDATE ".CATEGORIES_TABLE." SET subcount=".$counts[$categoryID]['subcats'].", products_count=".$counts[$categoryID]['customer_count'].", products_count_admin=".$counts[$categoryID]['admin_count']." WHERE categoryID=$categoryID");
    }
}
pupkin
Активист
 
Сообщения: 15
Зарегистрирован: 08 окт 2013, 22:57



Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 1

cron
Copyright © 2000-2011 phpBB Group. Все права защищены.
Отдел продаж: sales@shopcms.ru