Rataban Опубліковано: 17 квітня 2016 Share Опубліковано: 17 квітня 2016 Всех приветствую, кто-нибудь может помочь?Не помню, после чего началось, в журнале ошибок, ошибки давно были, но так не тупило, причем рандомно, с утра загрузка страницы 1.2 секунды, вечером 30!Файл slow.txt. и Журнал ошибок прилагаю. Спасибо. slow.txt Журнал ошибок.txt Надіслати Поділитися на інших сайтах More sharing options...
Otvet Опубліковано: 17 квітня 2016 Share Опубліковано: 17 квітня 2016 SELECT COUNT = подсчет Надіслати Поділитися на інших сайтах More sharing options... Rataban Опубліковано: 17 квітня 2016 Автор Share Опубліковано: 17 квітня 2016 Так вроде вырубил подсчет товаров в админке. Что он считает и как устранить? Надіслати Поділитися на інших сайтах More sharing options... Otvet Опубліковано: 17 квітня 2016 Share Опубліковано: 17 квітня 2016 (змінено) Не всегда помогает Нужно в модели в gettotalproducts добавить что то типа if (!isset($data['limit'])){return 0;} или вручную искать gettotalproducts и вырубать где не нужен Змінено 17 квітня 2016 користувачем Otvet 2 Надіслати Поділитися на інших сайтах More sharing options... OldAine Опубліковано: 17 квітня 2016 Share Опубліковано: 17 квітня 2016 Всех приветствую, кто-нибудь может помочь? Не помню, после чего началось, в журнале ошибок, ошибки давно были, но так не тупило, причем рандомно, с утра загрузка страницы 1.2 секунды, вечером 30! Файл slow.txt. и Журнал ошибок прилагаю. Спасибо. Если утром действительно было всего 1-2 сек на загрузку, а вечером тупит по пол минуты, то дело в в нагрузке на сервера вашего хостинга. Получается что хостер не справляется, сервера перегружаются от наплыва людей, которые лезут в интернет после работы... А если нужна профессиональная оптимизация сайта, то обращайтесь к Snastik. 1 Надіслати Поділитися на інших сайтах More sharing options... Rataban Опубліковано: 17 квітня 2016 Автор Share Опубліковано: 17 квітня 2016 OtvetСпасибо. Будем искать. OldAineДа у них на все один ответ, сервера работают в штатном режиме. Хотя хостинг Украина, вроде нормальный и тех поддержка есть. Сам уже думал, может поменять, но поможет ли...это вопрос. Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 17 квітня 2016 Share Опубліковано: 17 квітня 2016 Otvet Спасибо. Будем искать. OldAineДа у них на все один ответ, сервера работают в штатном режиме. Хотя хостинг Украина, вроде нормальный и тех поддержка есть. Сам уже думал, может поменять, но поможет ли...это вопрос. У вас: 1. Есть подсчет товаров в категориях (в модулях и т п) 2. Утром нагрузка на сервер меньше - он справляется с вашей "нагрузкой", вечером, когда соседей по серверу "кошмарят" - нет. Но это действительно штатная работа дешевого тарифа. 3. Вас спасет или выделенный сервер или оптимизация специалиста 4. Советую: и то и другое Надіслати Поділитися на інших сайтах More sharing options... OldAine Опубліковано: 17 квітня 2016 Share Опубліковано: 17 квітня 2016 Otvet Спасибо. Будем искать. OldAineДа у них на все один ответ, сервера работают в штатном режиме. Хотя хостинг Украина, вроде нормальный и тех поддержка есть. Сам уже думал, может поменять, но поможет ли...это вопрос. Кстати фактически нет никакой разницы в какой стране будет ваш хостинг, главное чтобы он был качественным. Я держу сайты на российском Reg.ru и он справляется, но это пока. Так-же рекомендую перейти на admin vps, говорят сайты становятся быстрее уже даже после переноса, без всяких оптимизаций. В будущем тоже планирую к ним уйти. Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 17 квітня 2016 Share Опубліковано: 17 квітня 2016 Кстати фактически нет никакой разницы в какой стране будет ваш хостинг, главное чтобы он был качественным. Я держу сайты на российском Reg.ru и он справляется, но это пока. Так-же рекомендую перейти на admin vps, говорят сайты становятся быстрее уже даже после переноса, без всяких оптимизаций. В будущем тоже планирую к ним уйти. Для РФ - критичен хостинг в ru-ix и днс там же. Для UA - так же критичнен хостинг в зоне ua-ix но в Укр средняя скорость на душу населения все таки больше. И расстояния поменьше. Встречал товарищей которые хостятся в USA - но простите, скорость передачи данных по проводам имеет физическую величину. И эта величина превращается на длинных растояних в реальные секунды. Надіслати Поділитися на інших сайтах More sharing options... Rataban Опубліковано: 17 квітня 2016 Автор Share Опубліковано: 17 квітня 2016 Вообщем полегчало :-D . Дальше пишу, может кому-то поможет. Какой- то модуль запрашивал просчет товаров в файле header.php. а так как этот файл везде, то тормозило абсолютно все.Благодаря ценным советам Otvet , нашел я где встречается gettotalproducts и оказалось в файле шаблона univer_menu.xml. После этого добавил строку предложенную Otvet (комментить нельзя, сразу ошибку выбивает) и случилось чудо. Сайт загрузился, меньше чем за секунду, что с ним никогда не бывало.Otvet огромадное спасибо! Всем ответившим так же благодарность! зы Ну и отдельное спасибо freelancer, за полезный мод.зыы Со спасибо закончил) Непонятно только, какого этот файл запрашивал просчет. Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 17 квітня 2016 Share Опубліковано: 17 квітня 2016 Вообщем полегчало :-D . Дальше пишу, может кому-то поможет. Какой- то модуль запрашивал просчет товаров в файле header.php. а так как этот файл везде, то тормозило абсолютно все. Благодаря ценным советам Otvet , нашел я где встречается gettotalproducts и оказалось в файле шаблона univer_menu.xml. После этого добавил строку предложенную Otvet (комментить нельзя, сразу ошибку выбивает) и случилось чудо. Сайт загрузился, меньше чем за секунду, что с ним никогда не бывало. Otvet огромадное спасибо! Всем ответившим так же благодарность! зы Ну и отдельное спасибо freelancer, за полезный мод. зыы Со спасибо закончил) Непонятно только, какого этот файл запрашивал просчет. Это недоделка 1.5 Но если в меню просчеты и можно выключить то в некоторых частях кода - не получится. Когда магазин разрастается до 3-4к товаров и на нем появляется трафик. Одним выкусыванием подсчета обойтись не получается в принципе. Надіслати Поділитися на інших сайтах More sharing options... Rataban Опубліковано: 18 квітня 2016 Автор Share Опубліковано: 18 квітня 2016 (змінено) snastik Недолго музыка играла. У меня даже повыкусывать не получается. Неубиваемый просто подсчет! Проблема явно в этом, как определить что включает этот ..... подсчет. slow (2).txt Змінено 18 квітня 2016 користувачем Rataban Надіслати Поділитися на інших сайтах More sharing options... Otvet Опубліковано: 18 квітня 2016 Share Опубліковано: 18 квітня 2016 он полностью и не будет убиваться, в контроллере категории должен оставаться выложите функцию gettotalproducts сюда под спойлер из файла catalog/model/catalog/product.php Надіслати Поділитися на інших сайтах More sharing options... Rataban Опубліковано: 18 квітня 2016 Автор Share Опубліковано: 18 квітня 2016 Выложил. В 2 местах встречается. public function getTotalProducts($data = array()) { if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getCustomerGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } $sql = "SELECT COUNT(DISTINCT p.product_id) AS total"; public function getTotalProductSpecials() { if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getCustomerGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } $query = $this->db->query("SELECT COUNT(DISTINCT ps.product_id) AS total FROM " . DB_PREFIX . "product_special ps LEFT JOIN " . DB_PREFIX . "product p ON (ps.product_id = p.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE p.status = '1' AND p.date_available <= '" . $this->NOW . "' AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND ps.customer_group_id = '" . (int)$customer_group_id . "' AND ((ps.date_start = '0000-00-00' OR ps.date_start < '" . $this->NOW . "') AND (ps.date_end = '0000-00-00' OR ps.date_end > '" . $this->NOW . "'))"); if (isset($query->row['total'])) { return $query->row['total']; } else { return 0; } } } ?> Надіслати Поділитися на інших сайтах More sharing options... Otvet Опубліковано: 18 квітня 2016 Share Опубліковано: 18 квітня 2016 втрое это акционные первый полностью выложите Надіслати Поділитися на інших сайтах More sharing options... Rataban Опубліковано: 18 квітня 2016 Автор Share Опубліковано: 18 квітня 2016 Вроде так. public function getTotalProducts($data = array()) { if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getCustomerGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } $sql = "SELECT COUNT(DISTINCT p.product_id) AS total"; if (!empty($data['filter_category_id'])) { if (!empty($data['filter_sub_category'])) { $sql .= " FROM " . DB_PREFIX . "category_path cp LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (cp.category_id = p2c.category_id)"; } else { $sql .= " FROM " . DB_PREFIX . "product_to_category p2c"; } if (!empty($data['filter_filter'])) { $sql .= " LEFT JOIN " . DB_PREFIX . "product_filter pf ON (p2c.product_id = pf.product_id) LEFT JOIN " . DB_PREFIX . "product p ON (pf.product_id = p.product_id)"; } else { $sql .= " LEFT JOIN " . DB_PREFIX . "product p ON (p2c.product_id = p.product_id)"; } } else { $sql .= " FROM " . DB_PREFIX . "product p"; } $sql .= " LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= '" . $this->NOW . "' AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'"; if (!empty($data['filter_category_id'])) { if (!empty($data['filter_sub_category'])) { $sql .= " AND cp.path_id = '" . (int)$data['filter_category_id'] . "'"; } else { $sql .= " AND p2c.category_id = '" . (int)$data['filter_category_id'] . "'"; } if (!empty($data['filter_filter'])) { $implode = array(); $filters = explode(',', $data['filter_filter']); foreach ($filters as $filter_id) { $implode[] = (int)$filter_id; } $sql .= " AND pf.filter_id IN (" . implode(',', $implode) . ")"; } } if (!empty($data['filter_name']) || !empty($data['filter_tag'])) { $sql .= " AND ("; if (!empty($data['filter_name'])) { $implode = array(); $words = explode(' ', trim(preg_replace('/\s\s+/', ' ', $data['filter_name']))); foreach ($words as $word) { $implode[] = "pd.name LIKE '%" . $this->db->escape($word) . "%'"; } if ($implode) { $sql .= " " . implode(" AND ", $implode) . ""; } if (!empty($data['filter_description'])) { $sql .= " OR pd.description LIKE '%" . $this->db->escape($data['filter_name']) . "%'"; } } if (!empty($data['filter_name']) && !empty($data['filter_tag'])) { $sql .= " OR "; } if (!empty($data['filter_tag'])) { $sql .= "pd.tag LIKE '%" . $this->db->escape(utf8_strtolower($data['filter_tag'])) . "%'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.model) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.sku) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.upc) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.ean) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.jan) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.isbn) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.mpn) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } $sql .= ")"; } if (!empty($data['filter_manufacturer_id'])) { $sql .= " AND p.manufacturer_id = '" . (int)$data['filter_manufacturer_id'] . "'"; } $query = $this->db->query($sql); return $query->row['total']; } Надіслати Поділитися на інших сайтах More sharing options... Otvet Опубліковано: 18 квітня 2016 Share Опубліковано: 18 квітня 2016 (змінено) А если так? public function getTotalProducts($data = array()) { if ((!isset($data['limit']))&&(!isset($data['start'))){return 0;} else{ if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getCustomerGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } $sql = "SELECT COUNT(DISTINCT p.product_id) AS total"; if (!empty($data['filter_category_id'])) { if (!empty($data['filter_sub_category'])) { $sql .= " FROM " . DB_PREFIX . "category_path cp LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (cp.category_id = p2c.category_id)"; } else { $sql .= " FROM " . DB_PREFIX . "product_to_category p2c"; } if (!empty($data['filter_filter'])) { $sql .= " LEFT JOIN " . DB_PREFIX . "product_filter pf ON (p2c.product_id = pf.product_id) LEFT JOIN " . DB_PREFIX . "product p ON (pf.product_id = p.product_id)"; } else { $sql .= " LEFT JOIN " . DB_PREFIX . "product p ON (p2c.product_id = p.product_id)"; } } else { $sql .= " FROM " . DB_PREFIX . "product p"; } $sql .= " LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= '" . $this->NOW . "' AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'"; if (!empty($data['filter_category_id'])) { if (!empty($data['filter_sub_category'])) { $sql .= " AND cp.path_id = '" . (int)$data['filter_category_id'] . "'"; } else { $sql .= " AND p2c.category_id = '" . (int)$data['filter_category_id'] . "'"; } if (!empty($data['filter_filter'])) { $implode = array(); $filters = explode(',', $data['filter_filter']); foreach ($filters as $filter_id) { $implode[] = (int)$filter_id; } $sql .= " AND pf.filter_id IN (" . implode(',', $implode) . ")"; } } if (!empty($data['filter_name']) || !empty($data['filter_tag'])) { $sql .= " AND ("; if (!empty($data['filter_name'])) { $implode = array(); $words = explode(' ', trim(preg_replace('/\s\s+/', ' ', $data['filter_name']))); foreach ($words as $word) { $implode[] = "pd.name LIKE '%" . $this->db->escape($word) . "%'"; } if ($implode) { $sql .= " " . implode(" AND ", $implode) . ""; } if (!empty($data['filter_description'])) { $sql .= " OR pd.description LIKE '%" . $this->db->escape($data['filter_name']) . "%'"; } } if (!empty($data['filter_name']) && !empty($data['filter_tag'])) { $sql .= " OR "; } if (!empty($data['filter_tag'])) { $sql .= "pd.tag LIKE '%" . $this->db->escape(utf8_strtolower($data['filter_tag'])) . "%'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.model) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.sku) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.upc) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.ean) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.jan) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.isbn) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.mpn) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } $sql .= ")"; } if (!empty($data['filter_manufacturer_id'])) { $sql .= " AND p.manufacturer_id = '" . (int)$data['filter_manufacturer_id'] . "'"; } $query = $this->db->query($sql); return $query->row['total']; } } Змінено 18 квітня 2016 користувачем Otvet Надіслати Поділитися на інших сайтах More sharing options... Rataban Опубліковано: 18 квітня 2016 Автор Share Опубліковано: 18 квітня 2016 Ошибку выбивает. Не хочу больше отнимать Ваше время, и так сайт вместо 25с грузится 5с, понаблюдаю пару дней, если опять сильно затупит, надо к спецу обращаться. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації Модуль Jet Cache SE - кешування, pagespeed, оптимізація магазинів [Поддержка] 1 2 3 4 75 Автор: markimax, 15 березня 2017 cache seo cms (і ще %d) Теги: cache seo cms кеширование кеш страниц кеш контроллеров кеш моделей скорость jet cache оптимизация запросы тормозит pagespeed 1 852 відповіді 240 549 переглядів markimax 13 жовтня pagespeed Мобільна версія OpenCart магазину Автор: Sha, 12 березня 2018 mobile speed без гмо (і ще %d) Теги: mobile speed без гмо 100/100 layout layout type mobile route mobile route adaptive usabiliti *pro* оптимизация скорость тормозит попугаи mobiledetect mobile version first mobile mobile header 0 коментарів 25 730 переглядів Sha 12 березня 2018 pagespeed Модуль Мобільна версія OpenCart магазину [Поддержка] 1 2 3 4 10 Автор: Sha, 12 березня 2018 mobile speed без гмо (і ще %d) Теги: mobile speed без гмо 100/100 layout layout type mobile route mobile route adaptive usabiliti *pro* оптимизация скорость тормозит попугаи mobiledetect mobile version first mobile mobile header 247 відповідей 38 357 переглядів Sha 31 жовтня 2021 Jet Cache SE - кешування, pagespeed, оптимізація магазинів Автор: markimax, 15 березня 2017 cache seo cms (і ще %d) Теги: cache seo cms кеширование кеш страниц кеш контроллеров кеш моделей скорость jet cache оптимизация запросы тормозит pagespeed 0 коментарів 102 955 переглядів markimax 15 березня 2017 Тормозит сайт! Помогите Автор: Pavel91, 3 березня 2019 тормозитсайт тормозит (і ще %d) Теги: тормозитсайт тормозит настройка медленныйсайт 5 відповідей 955 переглядів markimax 8 березня 2019 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Встановлення, оновлення, налаштування Внезапно тормозит сайт Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000 × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
Rataban Опубліковано: 17 квітня 2016 Автор Share Опубліковано: 17 квітня 2016 Так вроде вырубил подсчет товаров в админке. Что он считает и как устранить? Надіслати Поділитися на інших сайтах More sharing options...
Otvet Опубліковано: 17 квітня 2016 Share Опубліковано: 17 квітня 2016 (змінено) Не всегда помогает Нужно в модели в gettotalproducts добавить что то типа if (!isset($data['limit'])){return 0;} или вручную искать gettotalproducts и вырубать где не нужен Змінено 17 квітня 2016 користувачем Otvet 2 Надіслати Поділитися на інших сайтах More sharing options... OldAine Опубліковано: 17 квітня 2016 Share Опубліковано: 17 квітня 2016 Всех приветствую, кто-нибудь может помочь? Не помню, после чего началось, в журнале ошибок, ошибки давно были, но так не тупило, причем рандомно, с утра загрузка страницы 1.2 секунды, вечером 30! Файл slow.txt. и Журнал ошибок прилагаю. Спасибо. Если утром действительно было всего 1-2 сек на загрузку, а вечером тупит по пол минуты, то дело в в нагрузке на сервера вашего хостинга. Получается что хостер не справляется, сервера перегружаются от наплыва людей, которые лезут в интернет после работы... А если нужна профессиональная оптимизация сайта, то обращайтесь к Snastik. 1 Надіслати Поділитися на інших сайтах More sharing options... Rataban Опубліковано: 17 квітня 2016 Автор Share Опубліковано: 17 квітня 2016 OtvetСпасибо. Будем искать. OldAineДа у них на все один ответ, сервера работают в штатном режиме. Хотя хостинг Украина, вроде нормальный и тех поддержка есть. Сам уже думал, может поменять, но поможет ли...это вопрос. Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 17 квітня 2016 Share Опубліковано: 17 квітня 2016 Otvet Спасибо. Будем искать. OldAineДа у них на все один ответ, сервера работают в штатном режиме. Хотя хостинг Украина, вроде нормальный и тех поддержка есть. Сам уже думал, может поменять, но поможет ли...это вопрос. У вас: 1. Есть подсчет товаров в категориях (в модулях и т п) 2. Утром нагрузка на сервер меньше - он справляется с вашей "нагрузкой", вечером, когда соседей по серверу "кошмарят" - нет. Но это действительно штатная работа дешевого тарифа. 3. Вас спасет или выделенный сервер или оптимизация специалиста 4. Советую: и то и другое Надіслати Поділитися на інших сайтах More sharing options... OldAine Опубліковано: 17 квітня 2016 Share Опубліковано: 17 квітня 2016 Otvet Спасибо. Будем искать. OldAineДа у них на все один ответ, сервера работают в штатном режиме. Хотя хостинг Украина, вроде нормальный и тех поддержка есть. Сам уже думал, может поменять, но поможет ли...это вопрос. Кстати фактически нет никакой разницы в какой стране будет ваш хостинг, главное чтобы он был качественным. Я держу сайты на российском Reg.ru и он справляется, но это пока. Так-же рекомендую перейти на admin vps, говорят сайты становятся быстрее уже даже после переноса, без всяких оптимизаций. В будущем тоже планирую к ним уйти. Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 17 квітня 2016 Share Опубліковано: 17 квітня 2016 Кстати фактически нет никакой разницы в какой стране будет ваш хостинг, главное чтобы он был качественным. Я держу сайты на российском Reg.ru и он справляется, но это пока. Так-же рекомендую перейти на admin vps, говорят сайты становятся быстрее уже даже после переноса, без всяких оптимизаций. В будущем тоже планирую к ним уйти. Для РФ - критичен хостинг в ru-ix и днс там же. Для UA - так же критичнен хостинг в зоне ua-ix но в Укр средняя скорость на душу населения все таки больше. И расстояния поменьше. Встречал товарищей которые хостятся в USA - но простите, скорость передачи данных по проводам имеет физическую величину. И эта величина превращается на длинных растояних в реальные секунды. Надіслати Поділитися на інших сайтах More sharing options... Rataban Опубліковано: 17 квітня 2016 Автор Share Опубліковано: 17 квітня 2016 Вообщем полегчало :-D . Дальше пишу, может кому-то поможет. Какой- то модуль запрашивал просчет товаров в файле header.php. а так как этот файл везде, то тормозило абсолютно все.Благодаря ценным советам Otvet , нашел я где встречается gettotalproducts и оказалось в файле шаблона univer_menu.xml. После этого добавил строку предложенную Otvet (комментить нельзя, сразу ошибку выбивает) и случилось чудо. Сайт загрузился, меньше чем за секунду, что с ним никогда не бывало.Otvet огромадное спасибо! Всем ответившим так же благодарность! зы Ну и отдельное спасибо freelancer, за полезный мод.зыы Со спасибо закончил) Непонятно только, какого этот файл запрашивал просчет. Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 17 квітня 2016 Share Опубліковано: 17 квітня 2016 Вообщем полегчало :-D . Дальше пишу, может кому-то поможет. Какой- то модуль запрашивал просчет товаров в файле header.php. а так как этот файл везде, то тормозило абсолютно все. Благодаря ценным советам Otvet , нашел я где встречается gettotalproducts и оказалось в файле шаблона univer_menu.xml. После этого добавил строку предложенную Otvet (комментить нельзя, сразу ошибку выбивает) и случилось чудо. Сайт загрузился, меньше чем за секунду, что с ним никогда не бывало. Otvet огромадное спасибо! Всем ответившим так же благодарность! зы Ну и отдельное спасибо freelancer, за полезный мод. зыы Со спасибо закончил) Непонятно только, какого этот файл запрашивал просчет. Это недоделка 1.5 Но если в меню просчеты и можно выключить то в некоторых частях кода - не получится. Когда магазин разрастается до 3-4к товаров и на нем появляется трафик. Одним выкусыванием подсчета обойтись не получается в принципе. Надіслати Поділитися на інших сайтах More sharing options... Rataban Опубліковано: 18 квітня 2016 Автор Share Опубліковано: 18 квітня 2016 (змінено) snastik Недолго музыка играла. У меня даже повыкусывать не получается. Неубиваемый просто подсчет! Проблема явно в этом, как определить что включает этот ..... подсчет. slow (2).txt Змінено 18 квітня 2016 користувачем Rataban Надіслати Поділитися на інших сайтах More sharing options... Otvet Опубліковано: 18 квітня 2016 Share Опубліковано: 18 квітня 2016 он полностью и не будет убиваться, в контроллере категории должен оставаться выложите функцию gettotalproducts сюда под спойлер из файла catalog/model/catalog/product.php Надіслати Поділитися на інших сайтах More sharing options... Rataban Опубліковано: 18 квітня 2016 Автор Share Опубліковано: 18 квітня 2016 Выложил. В 2 местах встречается. public function getTotalProducts($data = array()) { if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getCustomerGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } $sql = "SELECT COUNT(DISTINCT p.product_id) AS total"; public function getTotalProductSpecials() { if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getCustomerGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } $query = $this->db->query("SELECT COUNT(DISTINCT ps.product_id) AS total FROM " . DB_PREFIX . "product_special ps LEFT JOIN " . DB_PREFIX . "product p ON (ps.product_id = p.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE p.status = '1' AND p.date_available <= '" . $this->NOW . "' AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND ps.customer_group_id = '" . (int)$customer_group_id . "' AND ((ps.date_start = '0000-00-00' OR ps.date_start < '" . $this->NOW . "') AND (ps.date_end = '0000-00-00' OR ps.date_end > '" . $this->NOW . "'))"); if (isset($query->row['total'])) { return $query->row['total']; } else { return 0; } } } ?> Надіслати Поділитися на інших сайтах More sharing options... Otvet Опубліковано: 18 квітня 2016 Share Опубліковано: 18 квітня 2016 втрое это акционные первый полностью выложите Надіслати Поділитися на інших сайтах More sharing options... Rataban Опубліковано: 18 квітня 2016 Автор Share Опубліковано: 18 квітня 2016 Вроде так. public function getTotalProducts($data = array()) { if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getCustomerGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } $sql = "SELECT COUNT(DISTINCT p.product_id) AS total"; if (!empty($data['filter_category_id'])) { if (!empty($data['filter_sub_category'])) { $sql .= " FROM " . DB_PREFIX . "category_path cp LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (cp.category_id = p2c.category_id)"; } else { $sql .= " FROM " . DB_PREFIX . "product_to_category p2c"; } if (!empty($data['filter_filter'])) { $sql .= " LEFT JOIN " . DB_PREFIX . "product_filter pf ON (p2c.product_id = pf.product_id) LEFT JOIN " . DB_PREFIX . "product p ON (pf.product_id = p.product_id)"; } else { $sql .= " LEFT JOIN " . DB_PREFIX . "product p ON (p2c.product_id = p.product_id)"; } } else { $sql .= " FROM " . DB_PREFIX . "product p"; } $sql .= " LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= '" . $this->NOW . "' AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'"; if (!empty($data['filter_category_id'])) { if (!empty($data['filter_sub_category'])) { $sql .= " AND cp.path_id = '" . (int)$data['filter_category_id'] . "'"; } else { $sql .= " AND p2c.category_id = '" . (int)$data['filter_category_id'] . "'"; } if (!empty($data['filter_filter'])) { $implode = array(); $filters = explode(',', $data['filter_filter']); foreach ($filters as $filter_id) { $implode[] = (int)$filter_id; } $sql .= " AND pf.filter_id IN (" . implode(',', $implode) . ")"; } } if (!empty($data['filter_name']) || !empty($data['filter_tag'])) { $sql .= " AND ("; if (!empty($data['filter_name'])) { $implode = array(); $words = explode(' ', trim(preg_replace('/\s\s+/', ' ', $data['filter_name']))); foreach ($words as $word) { $implode[] = "pd.name LIKE '%" . $this->db->escape($word) . "%'"; } if ($implode) { $sql .= " " . implode(" AND ", $implode) . ""; } if (!empty($data['filter_description'])) { $sql .= " OR pd.description LIKE '%" . $this->db->escape($data['filter_name']) . "%'"; } } if (!empty($data['filter_name']) && !empty($data['filter_tag'])) { $sql .= " OR "; } if (!empty($data['filter_tag'])) { $sql .= "pd.tag LIKE '%" . $this->db->escape(utf8_strtolower($data['filter_tag'])) . "%'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.model) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.sku) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.upc) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.ean) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.jan) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.isbn) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.mpn) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } $sql .= ")"; } if (!empty($data['filter_manufacturer_id'])) { $sql .= " AND p.manufacturer_id = '" . (int)$data['filter_manufacturer_id'] . "'"; } $query = $this->db->query($sql); return $query->row['total']; } Надіслати Поділитися на інших сайтах More sharing options... Otvet Опубліковано: 18 квітня 2016 Share Опубліковано: 18 квітня 2016 (змінено) А если так? public function getTotalProducts($data = array()) { if ((!isset($data['limit']))&&(!isset($data['start'))){return 0;} else{ if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getCustomerGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } $sql = "SELECT COUNT(DISTINCT p.product_id) AS total"; if (!empty($data['filter_category_id'])) { if (!empty($data['filter_sub_category'])) { $sql .= " FROM " . DB_PREFIX . "category_path cp LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (cp.category_id = p2c.category_id)"; } else { $sql .= " FROM " . DB_PREFIX . "product_to_category p2c"; } if (!empty($data['filter_filter'])) { $sql .= " LEFT JOIN " . DB_PREFIX . "product_filter pf ON (p2c.product_id = pf.product_id) LEFT JOIN " . DB_PREFIX . "product p ON (pf.product_id = p.product_id)"; } else { $sql .= " LEFT JOIN " . DB_PREFIX . "product p ON (p2c.product_id = p.product_id)"; } } else { $sql .= " FROM " . DB_PREFIX . "product p"; } $sql .= " LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= '" . $this->NOW . "' AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'"; if (!empty($data['filter_category_id'])) { if (!empty($data['filter_sub_category'])) { $sql .= " AND cp.path_id = '" . (int)$data['filter_category_id'] . "'"; } else { $sql .= " AND p2c.category_id = '" . (int)$data['filter_category_id'] . "'"; } if (!empty($data['filter_filter'])) { $implode = array(); $filters = explode(',', $data['filter_filter']); foreach ($filters as $filter_id) { $implode[] = (int)$filter_id; } $sql .= " AND pf.filter_id IN (" . implode(',', $implode) . ")"; } } if (!empty($data['filter_name']) || !empty($data['filter_tag'])) { $sql .= " AND ("; if (!empty($data['filter_name'])) { $implode = array(); $words = explode(' ', trim(preg_replace('/\s\s+/', ' ', $data['filter_name']))); foreach ($words as $word) { $implode[] = "pd.name LIKE '%" . $this->db->escape($word) . "%'"; } if ($implode) { $sql .= " " . implode(" AND ", $implode) . ""; } if (!empty($data['filter_description'])) { $sql .= " OR pd.description LIKE '%" . $this->db->escape($data['filter_name']) . "%'"; } } if (!empty($data['filter_name']) && !empty($data['filter_tag'])) { $sql .= " OR "; } if (!empty($data['filter_tag'])) { $sql .= "pd.tag LIKE '%" . $this->db->escape(utf8_strtolower($data['filter_tag'])) . "%'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.model) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.sku) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.upc) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.ean) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.jan) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.isbn) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.mpn) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } $sql .= ")"; } if (!empty($data['filter_manufacturer_id'])) { $sql .= " AND p.manufacturer_id = '" . (int)$data['filter_manufacturer_id'] . "'"; } $query = $this->db->query($sql); return $query->row['total']; } } Змінено 18 квітня 2016 користувачем Otvet Надіслати Поділитися на інших сайтах More sharing options... Rataban Опубліковано: 18 квітня 2016 Автор Share Опубліковано: 18 квітня 2016 Ошибку выбивает. Не хочу больше отнимать Ваше время, и так сайт вместо 25с грузится 5с, понаблюдаю пару дней, если опять сильно затупит, надо к спецу обращаться. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації Модуль Jet Cache SE - кешування, pagespeed, оптимізація магазинів [Поддержка] 1 2 3 4 75 Автор: markimax, 15 березня 2017 cache seo cms (і ще %d) Теги: cache seo cms кеширование кеш страниц кеш контроллеров кеш моделей скорость jet cache оптимизация запросы тормозит pagespeed 1 852 відповіді 240 549 переглядів markimax 13 жовтня pagespeed Мобільна версія OpenCart магазину Автор: Sha, 12 березня 2018 mobile speed без гмо (і ще %d) Теги: mobile speed без гмо 100/100 layout layout type mobile route mobile route adaptive usabiliti *pro* оптимизация скорость тормозит попугаи mobiledetect mobile version first mobile mobile header 0 коментарів 25 730 переглядів Sha 12 березня 2018 pagespeed Модуль Мобільна версія OpenCart магазину [Поддержка] 1 2 3 4 10 Автор: Sha, 12 березня 2018 mobile speed без гмо (і ще %d) Теги: mobile speed без гмо 100/100 layout layout type mobile route mobile route adaptive usabiliti *pro* оптимизация скорость тормозит попугаи mobiledetect mobile version first mobile mobile header 247 відповідей 38 357 переглядів Sha 31 жовтня 2021 Jet Cache SE - кешування, pagespeed, оптимізація магазинів Автор: markimax, 15 березня 2017 cache seo cms (і ще %d) Теги: cache seo cms кеширование кеш страниц кеш контроллеров кеш моделей скорость jet cache оптимизация запросы тормозит pagespeed 0 коментарів 102 955 переглядів markimax 15 березня 2017 Тормозит сайт! Помогите Автор: Pavel91, 3 березня 2019 тормозитсайт тормозит (і ще %d) Теги: тормозитсайт тормозит настройка медленныйсайт 5 відповідей 955 переглядів markimax 8 березня 2019 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Встановлення, оновлення, налаштування Внезапно тормозит сайт Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000 × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
OldAine Опубліковано: 17 квітня 2016 Share Опубліковано: 17 квітня 2016 Всех приветствую, кто-нибудь может помочь? Не помню, после чего началось, в журнале ошибок, ошибки давно были, но так не тупило, причем рандомно, с утра загрузка страницы 1.2 секунды, вечером 30! Файл slow.txt. и Журнал ошибок прилагаю. Спасибо. Если утром действительно было всего 1-2 сек на загрузку, а вечером тупит по пол минуты, то дело в в нагрузке на сервера вашего хостинга. Получается что хостер не справляется, сервера перегружаются от наплыва людей, которые лезут в интернет после работы... А если нужна профессиональная оптимизация сайта, то обращайтесь к Snastik. 1 Надіслати Поділитися на інших сайтах More sharing options... Rataban Опубліковано: 17 квітня 2016 Автор Share Опубліковано: 17 квітня 2016 OtvetСпасибо. Будем искать. OldAineДа у них на все один ответ, сервера работают в штатном режиме. Хотя хостинг Украина, вроде нормальный и тех поддержка есть. Сам уже думал, может поменять, но поможет ли...это вопрос. Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 17 квітня 2016 Share Опубліковано: 17 квітня 2016 Otvet Спасибо. Будем искать. OldAineДа у них на все один ответ, сервера работают в штатном режиме. Хотя хостинг Украина, вроде нормальный и тех поддержка есть. Сам уже думал, может поменять, но поможет ли...это вопрос. У вас: 1. Есть подсчет товаров в категориях (в модулях и т п) 2. Утром нагрузка на сервер меньше - он справляется с вашей "нагрузкой", вечером, когда соседей по серверу "кошмарят" - нет. Но это действительно штатная работа дешевого тарифа. 3. Вас спасет или выделенный сервер или оптимизация специалиста 4. Советую: и то и другое Надіслати Поділитися на інших сайтах More sharing options... OldAine Опубліковано: 17 квітня 2016 Share Опубліковано: 17 квітня 2016 Otvet Спасибо. Будем искать. OldAineДа у них на все один ответ, сервера работают в штатном режиме. Хотя хостинг Украина, вроде нормальный и тех поддержка есть. Сам уже думал, может поменять, но поможет ли...это вопрос. Кстати фактически нет никакой разницы в какой стране будет ваш хостинг, главное чтобы он был качественным. Я держу сайты на российском Reg.ru и он справляется, но это пока. Так-же рекомендую перейти на admin vps, говорят сайты становятся быстрее уже даже после переноса, без всяких оптимизаций. В будущем тоже планирую к ним уйти. Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 17 квітня 2016 Share Опубліковано: 17 квітня 2016 Кстати фактически нет никакой разницы в какой стране будет ваш хостинг, главное чтобы он был качественным. Я держу сайты на российском Reg.ru и он справляется, но это пока. Так-же рекомендую перейти на admin vps, говорят сайты становятся быстрее уже даже после переноса, без всяких оптимизаций. В будущем тоже планирую к ним уйти. Для РФ - критичен хостинг в ru-ix и днс там же. Для UA - так же критичнен хостинг в зоне ua-ix но в Укр средняя скорость на душу населения все таки больше. И расстояния поменьше. Встречал товарищей которые хостятся в USA - но простите, скорость передачи данных по проводам имеет физическую величину. И эта величина превращается на длинных растояних в реальные секунды. Надіслати Поділитися на інших сайтах More sharing options... Rataban Опубліковано: 17 квітня 2016 Автор Share Опубліковано: 17 квітня 2016 Вообщем полегчало :-D . Дальше пишу, может кому-то поможет. Какой- то модуль запрашивал просчет товаров в файле header.php. а так как этот файл везде, то тормозило абсолютно все.Благодаря ценным советам Otvet , нашел я где встречается gettotalproducts и оказалось в файле шаблона univer_menu.xml. После этого добавил строку предложенную Otvet (комментить нельзя, сразу ошибку выбивает) и случилось чудо. Сайт загрузился, меньше чем за секунду, что с ним никогда не бывало.Otvet огромадное спасибо! Всем ответившим так же благодарность! зы Ну и отдельное спасибо freelancer, за полезный мод.зыы Со спасибо закончил) Непонятно только, какого этот файл запрашивал просчет. Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 17 квітня 2016 Share Опубліковано: 17 квітня 2016 Вообщем полегчало :-D . Дальше пишу, может кому-то поможет. Какой- то модуль запрашивал просчет товаров в файле header.php. а так как этот файл везде, то тормозило абсолютно все. Благодаря ценным советам Otvet , нашел я где встречается gettotalproducts и оказалось в файле шаблона univer_menu.xml. После этого добавил строку предложенную Otvet (комментить нельзя, сразу ошибку выбивает) и случилось чудо. Сайт загрузился, меньше чем за секунду, что с ним никогда не бывало. Otvet огромадное спасибо! Всем ответившим так же благодарность! зы Ну и отдельное спасибо freelancer, за полезный мод. зыы Со спасибо закончил) Непонятно только, какого этот файл запрашивал просчет. Это недоделка 1.5 Но если в меню просчеты и можно выключить то в некоторых частях кода - не получится. Когда магазин разрастается до 3-4к товаров и на нем появляется трафик. Одним выкусыванием подсчета обойтись не получается в принципе. Надіслати Поділитися на інших сайтах More sharing options... Rataban Опубліковано: 18 квітня 2016 Автор Share Опубліковано: 18 квітня 2016 (змінено) snastik Недолго музыка играла. У меня даже повыкусывать не получается. Неубиваемый просто подсчет! Проблема явно в этом, как определить что включает этот ..... подсчет. slow (2).txt Змінено 18 квітня 2016 користувачем Rataban Надіслати Поділитися на інших сайтах More sharing options... Otvet Опубліковано: 18 квітня 2016 Share Опубліковано: 18 квітня 2016 он полностью и не будет убиваться, в контроллере категории должен оставаться выложите функцию gettotalproducts сюда под спойлер из файла catalog/model/catalog/product.php Надіслати Поділитися на інших сайтах More sharing options... Rataban Опубліковано: 18 квітня 2016 Автор Share Опубліковано: 18 квітня 2016 Выложил. В 2 местах встречается. public function getTotalProducts($data = array()) { if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getCustomerGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } $sql = "SELECT COUNT(DISTINCT p.product_id) AS total"; public function getTotalProductSpecials() { if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getCustomerGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } $query = $this->db->query("SELECT COUNT(DISTINCT ps.product_id) AS total FROM " . DB_PREFIX . "product_special ps LEFT JOIN " . DB_PREFIX . "product p ON (ps.product_id = p.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE p.status = '1' AND p.date_available <= '" . $this->NOW . "' AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND ps.customer_group_id = '" . (int)$customer_group_id . "' AND ((ps.date_start = '0000-00-00' OR ps.date_start < '" . $this->NOW . "') AND (ps.date_end = '0000-00-00' OR ps.date_end > '" . $this->NOW . "'))"); if (isset($query->row['total'])) { return $query->row['total']; } else { return 0; } } } ?> Надіслати Поділитися на інших сайтах More sharing options... Otvet Опубліковано: 18 квітня 2016 Share Опубліковано: 18 квітня 2016 втрое это акционные первый полностью выложите Надіслати Поділитися на інших сайтах More sharing options... Rataban Опубліковано: 18 квітня 2016 Автор Share Опубліковано: 18 квітня 2016 Вроде так. public function getTotalProducts($data = array()) { if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getCustomerGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } $sql = "SELECT COUNT(DISTINCT p.product_id) AS total"; if (!empty($data['filter_category_id'])) { if (!empty($data['filter_sub_category'])) { $sql .= " FROM " . DB_PREFIX . "category_path cp LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (cp.category_id = p2c.category_id)"; } else { $sql .= " FROM " . DB_PREFIX . "product_to_category p2c"; } if (!empty($data['filter_filter'])) { $sql .= " LEFT JOIN " . DB_PREFIX . "product_filter pf ON (p2c.product_id = pf.product_id) LEFT JOIN " . DB_PREFIX . "product p ON (pf.product_id = p.product_id)"; } else { $sql .= " LEFT JOIN " . DB_PREFIX . "product p ON (p2c.product_id = p.product_id)"; } } else { $sql .= " FROM " . DB_PREFIX . "product p"; } $sql .= " LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= '" . $this->NOW . "' AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'"; if (!empty($data['filter_category_id'])) { if (!empty($data['filter_sub_category'])) { $sql .= " AND cp.path_id = '" . (int)$data['filter_category_id'] . "'"; } else { $sql .= " AND p2c.category_id = '" . (int)$data['filter_category_id'] . "'"; } if (!empty($data['filter_filter'])) { $implode = array(); $filters = explode(',', $data['filter_filter']); foreach ($filters as $filter_id) { $implode[] = (int)$filter_id; } $sql .= " AND pf.filter_id IN (" . implode(',', $implode) . ")"; } } if (!empty($data['filter_name']) || !empty($data['filter_tag'])) { $sql .= " AND ("; if (!empty($data['filter_name'])) { $implode = array(); $words = explode(' ', trim(preg_replace('/\s\s+/', ' ', $data['filter_name']))); foreach ($words as $word) { $implode[] = "pd.name LIKE '%" . $this->db->escape($word) . "%'"; } if ($implode) { $sql .= " " . implode(" AND ", $implode) . ""; } if (!empty($data['filter_description'])) { $sql .= " OR pd.description LIKE '%" . $this->db->escape($data['filter_name']) . "%'"; } } if (!empty($data['filter_name']) && !empty($data['filter_tag'])) { $sql .= " OR "; } if (!empty($data['filter_tag'])) { $sql .= "pd.tag LIKE '%" . $this->db->escape(utf8_strtolower($data['filter_tag'])) . "%'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.model) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.sku) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.upc) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.ean) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.jan) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.isbn) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.mpn) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } $sql .= ")"; } if (!empty($data['filter_manufacturer_id'])) { $sql .= " AND p.manufacturer_id = '" . (int)$data['filter_manufacturer_id'] . "'"; } $query = $this->db->query($sql); return $query->row['total']; } Надіслати Поділитися на інших сайтах More sharing options... Otvet Опубліковано: 18 квітня 2016 Share Опубліковано: 18 квітня 2016 (змінено) А если так? public function getTotalProducts($data = array()) { if ((!isset($data['limit']))&&(!isset($data['start'))){return 0;} else{ if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getCustomerGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } $sql = "SELECT COUNT(DISTINCT p.product_id) AS total"; if (!empty($data['filter_category_id'])) { if (!empty($data['filter_sub_category'])) { $sql .= " FROM " . DB_PREFIX . "category_path cp LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (cp.category_id = p2c.category_id)"; } else { $sql .= " FROM " . DB_PREFIX . "product_to_category p2c"; } if (!empty($data['filter_filter'])) { $sql .= " LEFT JOIN " . DB_PREFIX . "product_filter pf ON (p2c.product_id = pf.product_id) LEFT JOIN " . DB_PREFIX . "product p ON (pf.product_id = p.product_id)"; } else { $sql .= " LEFT JOIN " . DB_PREFIX . "product p ON (p2c.product_id = p.product_id)"; } } else { $sql .= " FROM " . DB_PREFIX . "product p"; } $sql .= " LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= '" . $this->NOW . "' AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'"; if (!empty($data['filter_category_id'])) { if (!empty($data['filter_sub_category'])) { $sql .= " AND cp.path_id = '" . (int)$data['filter_category_id'] . "'"; } else { $sql .= " AND p2c.category_id = '" . (int)$data['filter_category_id'] . "'"; } if (!empty($data['filter_filter'])) { $implode = array(); $filters = explode(',', $data['filter_filter']); foreach ($filters as $filter_id) { $implode[] = (int)$filter_id; } $sql .= " AND pf.filter_id IN (" . implode(',', $implode) . ")"; } } if (!empty($data['filter_name']) || !empty($data['filter_tag'])) { $sql .= " AND ("; if (!empty($data['filter_name'])) { $implode = array(); $words = explode(' ', trim(preg_replace('/\s\s+/', ' ', $data['filter_name']))); foreach ($words as $word) { $implode[] = "pd.name LIKE '%" . $this->db->escape($word) . "%'"; } if ($implode) { $sql .= " " . implode(" AND ", $implode) . ""; } if (!empty($data['filter_description'])) { $sql .= " OR pd.description LIKE '%" . $this->db->escape($data['filter_name']) . "%'"; } } if (!empty($data['filter_name']) && !empty($data['filter_tag'])) { $sql .= " OR "; } if (!empty($data['filter_tag'])) { $sql .= "pd.tag LIKE '%" . $this->db->escape(utf8_strtolower($data['filter_tag'])) . "%'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.model) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.sku) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.upc) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.ean) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.jan) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.isbn) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.mpn) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } $sql .= ")"; } if (!empty($data['filter_manufacturer_id'])) { $sql .= " AND p.manufacturer_id = '" . (int)$data['filter_manufacturer_id'] . "'"; } $query = $this->db->query($sql); return $query->row['total']; } } Змінено 18 квітня 2016 користувачем Otvet Надіслати Поділитися на інших сайтах More sharing options... Rataban Опубліковано: 18 квітня 2016 Автор Share Опубліковано: 18 квітня 2016 Ошибку выбивает. Не хочу больше отнимать Ваше время, и так сайт вместо 25с грузится 5с, понаблюдаю пару дней, если опять сильно затупит, надо к спецу обращаться. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації Модуль Jet Cache SE - кешування, pagespeed, оптимізація магазинів [Поддержка] 1 2 3 4 75 Автор: markimax, 15 березня 2017 cache seo cms (і ще %d) Теги: cache seo cms кеширование кеш страниц кеш контроллеров кеш моделей скорость jet cache оптимизация запросы тормозит pagespeed 1 852 відповіді 240 549 переглядів markimax 13 жовтня pagespeed Мобільна версія OpenCart магазину Автор: Sha, 12 березня 2018 mobile speed без гмо (і ще %d) Теги: mobile speed без гмо 100/100 layout layout type mobile route mobile route adaptive usabiliti *pro* оптимизация скорость тормозит попугаи mobiledetect mobile version first mobile mobile header 0 коментарів 25 730 переглядів Sha 12 березня 2018 pagespeed Модуль Мобільна версія OpenCart магазину [Поддержка] 1 2 3 4 10 Автор: Sha, 12 березня 2018 mobile speed без гмо (і ще %d) Теги: mobile speed без гмо 100/100 layout layout type mobile route mobile route adaptive usabiliti *pro* оптимизация скорость тормозит попугаи mobiledetect mobile version first mobile mobile header 247 відповідей 38 357 переглядів Sha 31 жовтня 2021 Jet Cache SE - кешування, pagespeed, оптимізація магазинів Автор: markimax, 15 березня 2017 cache seo cms (і ще %d) Теги: cache seo cms кеширование кеш страниц кеш контроллеров кеш моделей скорость jet cache оптимизация запросы тормозит pagespeed 0 коментарів 102 955 переглядів markimax 15 березня 2017 Тормозит сайт! Помогите Автор: Pavel91, 3 березня 2019 тормозитсайт тормозит (і ще %d) Теги: тормозитсайт тормозит настройка медленныйсайт 5 відповідей 955 переглядів markimax 8 березня 2019 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Встановлення, оновлення, налаштування Внезапно тормозит сайт Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000 × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
Rataban Опубліковано: 17 квітня 2016 Автор Share Опубліковано: 17 квітня 2016 OtvetСпасибо. Будем искать. OldAineДа у них на все один ответ, сервера работают в штатном режиме. Хотя хостинг Украина, вроде нормальный и тех поддержка есть. Сам уже думал, может поменять, но поможет ли...это вопрос. Надіслати Поділитися на інших сайтах More sharing options...
markimax Опубліковано: 17 квітня 2016 Share Опубліковано: 17 квітня 2016 Otvet Спасибо. Будем искать. OldAineДа у них на все один ответ, сервера работают в штатном режиме. Хотя хостинг Украина, вроде нормальный и тех поддержка есть. Сам уже думал, может поменять, но поможет ли...это вопрос. У вас: 1. Есть подсчет товаров в категориях (в модулях и т п) 2. Утром нагрузка на сервер меньше - он справляется с вашей "нагрузкой", вечером, когда соседей по серверу "кошмарят" - нет. Но это действительно штатная работа дешевого тарифа. 3. Вас спасет или выделенный сервер или оптимизация специалиста 4. Советую: и то и другое Надіслати Поділитися на інших сайтах More sharing options... OldAine Опубліковано: 17 квітня 2016 Share Опубліковано: 17 квітня 2016 Otvet Спасибо. Будем искать. OldAineДа у них на все один ответ, сервера работают в штатном режиме. Хотя хостинг Украина, вроде нормальный и тех поддержка есть. Сам уже думал, может поменять, но поможет ли...это вопрос. Кстати фактически нет никакой разницы в какой стране будет ваш хостинг, главное чтобы он был качественным. Я держу сайты на российском Reg.ru и он справляется, но это пока. Так-же рекомендую перейти на admin vps, говорят сайты становятся быстрее уже даже после переноса, без всяких оптимизаций. В будущем тоже планирую к ним уйти. Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 17 квітня 2016 Share Опубліковано: 17 квітня 2016 Кстати фактически нет никакой разницы в какой стране будет ваш хостинг, главное чтобы он был качественным. Я держу сайты на российском Reg.ru и он справляется, но это пока. Так-же рекомендую перейти на admin vps, говорят сайты становятся быстрее уже даже после переноса, без всяких оптимизаций. В будущем тоже планирую к ним уйти. Для РФ - критичен хостинг в ru-ix и днс там же. Для UA - так же критичнен хостинг в зоне ua-ix но в Укр средняя скорость на душу населения все таки больше. И расстояния поменьше. Встречал товарищей которые хостятся в USA - но простите, скорость передачи данных по проводам имеет физическую величину. И эта величина превращается на длинных растояних в реальные секунды. Надіслати Поділитися на інших сайтах More sharing options... Rataban Опубліковано: 17 квітня 2016 Автор Share Опубліковано: 17 квітня 2016 Вообщем полегчало :-D . Дальше пишу, может кому-то поможет. Какой- то модуль запрашивал просчет товаров в файле header.php. а так как этот файл везде, то тормозило абсолютно все.Благодаря ценным советам Otvet , нашел я где встречается gettotalproducts и оказалось в файле шаблона univer_menu.xml. После этого добавил строку предложенную Otvet (комментить нельзя, сразу ошибку выбивает) и случилось чудо. Сайт загрузился, меньше чем за секунду, что с ним никогда не бывало.Otvet огромадное спасибо! Всем ответившим так же благодарность! зы Ну и отдельное спасибо freelancer, за полезный мод.зыы Со спасибо закончил) Непонятно только, какого этот файл запрашивал просчет. Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 17 квітня 2016 Share Опубліковано: 17 квітня 2016 Вообщем полегчало :-D . Дальше пишу, может кому-то поможет. Какой- то модуль запрашивал просчет товаров в файле header.php. а так как этот файл везде, то тормозило абсолютно все. Благодаря ценным советам Otvet , нашел я где встречается gettotalproducts и оказалось в файле шаблона univer_menu.xml. После этого добавил строку предложенную Otvet (комментить нельзя, сразу ошибку выбивает) и случилось чудо. Сайт загрузился, меньше чем за секунду, что с ним никогда не бывало. Otvet огромадное спасибо! Всем ответившим так же благодарность! зы Ну и отдельное спасибо freelancer, за полезный мод. зыы Со спасибо закончил) Непонятно только, какого этот файл запрашивал просчет. Это недоделка 1.5 Но если в меню просчеты и можно выключить то в некоторых частях кода - не получится. Когда магазин разрастается до 3-4к товаров и на нем появляется трафик. Одним выкусыванием подсчета обойтись не получается в принципе. Надіслати Поділитися на інших сайтах More sharing options... Rataban Опубліковано: 18 квітня 2016 Автор Share Опубліковано: 18 квітня 2016 (змінено) snastik Недолго музыка играла. У меня даже повыкусывать не получается. Неубиваемый просто подсчет! Проблема явно в этом, как определить что включает этот ..... подсчет. slow (2).txt Змінено 18 квітня 2016 користувачем Rataban Надіслати Поділитися на інших сайтах More sharing options... Otvet Опубліковано: 18 квітня 2016 Share Опубліковано: 18 квітня 2016 он полностью и не будет убиваться, в контроллере категории должен оставаться выложите функцию gettotalproducts сюда под спойлер из файла catalog/model/catalog/product.php Надіслати Поділитися на інших сайтах More sharing options... Rataban Опубліковано: 18 квітня 2016 Автор Share Опубліковано: 18 квітня 2016 Выложил. В 2 местах встречается. public function getTotalProducts($data = array()) { if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getCustomerGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } $sql = "SELECT COUNT(DISTINCT p.product_id) AS total"; public function getTotalProductSpecials() { if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getCustomerGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } $query = $this->db->query("SELECT COUNT(DISTINCT ps.product_id) AS total FROM " . DB_PREFIX . "product_special ps LEFT JOIN " . DB_PREFIX . "product p ON (ps.product_id = p.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE p.status = '1' AND p.date_available <= '" . $this->NOW . "' AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND ps.customer_group_id = '" . (int)$customer_group_id . "' AND ((ps.date_start = '0000-00-00' OR ps.date_start < '" . $this->NOW . "') AND (ps.date_end = '0000-00-00' OR ps.date_end > '" . $this->NOW . "'))"); if (isset($query->row['total'])) { return $query->row['total']; } else { return 0; } } } ?> Надіслати Поділитися на інших сайтах More sharing options... Otvet Опубліковано: 18 квітня 2016 Share Опубліковано: 18 квітня 2016 втрое это акционные первый полностью выложите Надіслати Поділитися на інших сайтах More sharing options... Rataban Опубліковано: 18 квітня 2016 Автор Share Опубліковано: 18 квітня 2016 Вроде так. public function getTotalProducts($data = array()) { if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getCustomerGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } $sql = "SELECT COUNT(DISTINCT p.product_id) AS total"; if (!empty($data['filter_category_id'])) { if (!empty($data['filter_sub_category'])) { $sql .= " FROM " . DB_PREFIX . "category_path cp LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (cp.category_id = p2c.category_id)"; } else { $sql .= " FROM " . DB_PREFIX . "product_to_category p2c"; } if (!empty($data['filter_filter'])) { $sql .= " LEFT JOIN " . DB_PREFIX . "product_filter pf ON (p2c.product_id = pf.product_id) LEFT JOIN " . DB_PREFIX . "product p ON (pf.product_id = p.product_id)"; } else { $sql .= " LEFT JOIN " . DB_PREFIX . "product p ON (p2c.product_id = p.product_id)"; } } else { $sql .= " FROM " . DB_PREFIX . "product p"; } $sql .= " LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= '" . $this->NOW . "' AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'"; if (!empty($data['filter_category_id'])) { if (!empty($data['filter_sub_category'])) { $sql .= " AND cp.path_id = '" . (int)$data['filter_category_id'] . "'"; } else { $sql .= " AND p2c.category_id = '" . (int)$data['filter_category_id'] . "'"; } if (!empty($data['filter_filter'])) { $implode = array(); $filters = explode(',', $data['filter_filter']); foreach ($filters as $filter_id) { $implode[] = (int)$filter_id; } $sql .= " AND pf.filter_id IN (" . implode(',', $implode) . ")"; } } if (!empty($data['filter_name']) || !empty($data['filter_tag'])) { $sql .= " AND ("; if (!empty($data['filter_name'])) { $implode = array(); $words = explode(' ', trim(preg_replace('/\s\s+/', ' ', $data['filter_name']))); foreach ($words as $word) { $implode[] = "pd.name LIKE '%" . $this->db->escape($word) . "%'"; } if ($implode) { $sql .= " " . implode(" AND ", $implode) . ""; } if (!empty($data['filter_description'])) { $sql .= " OR pd.description LIKE '%" . $this->db->escape($data['filter_name']) . "%'"; } } if (!empty($data['filter_name']) && !empty($data['filter_tag'])) { $sql .= " OR "; } if (!empty($data['filter_tag'])) { $sql .= "pd.tag LIKE '%" . $this->db->escape(utf8_strtolower($data['filter_tag'])) . "%'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.model) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.sku) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.upc) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.ean) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.jan) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.isbn) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.mpn) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } $sql .= ")"; } if (!empty($data['filter_manufacturer_id'])) { $sql .= " AND p.manufacturer_id = '" . (int)$data['filter_manufacturer_id'] . "'"; } $query = $this->db->query($sql); return $query->row['total']; } Надіслати Поділитися на інших сайтах More sharing options... Otvet Опубліковано: 18 квітня 2016 Share Опубліковано: 18 квітня 2016 (змінено) А если так? public function getTotalProducts($data = array()) { if ((!isset($data['limit']))&&(!isset($data['start'))){return 0;} else{ if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getCustomerGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } $sql = "SELECT COUNT(DISTINCT p.product_id) AS total"; if (!empty($data['filter_category_id'])) { if (!empty($data['filter_sub_category'])) { $sql .= " FROM " . DB_PREFIX . "category_path cp LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (cp.category_id = p2c.category_id)"; } else { $sql .= " FROM " . DB_PREFIX . "product_to_category p2c"; } if (!empty($data['filter_filter'])) { $sql .= " LEFT JOIN " . DB_PREFIX . "product_filter pf ON (p2c.product_id = pf.product_id) LEFT JOIN " . DB_PREFIX . "product p ON (pf.product_id = p.product_id)"; } else { $sql .= " LEFT JOIN " . DB_PREFIX . "product p ON (p2c.product_id = p.product_id)"; } } else { $sql .= " FROM " . DB_PREFIX . "product p"; } $sql .= " LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= '" . $this->NOW . "' AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'"; if (!empty($data['filter_category_id'])) { if (!empty($data['filter_sub_category'])) { $sql .= " AND cp.path_id = '" . (int)$data['filter_category_id'] . "'"; } else { $sql .= " AND p2c.category_id = '" . (int)$data['filter_category_id'] . "'"; } if (!empty($data['filter_filter'])) { $implode = array(); $filters = explode(',', $data['filter_filter']); foreach ($filters as $filter_id) { $implode[] = (int)$filter_id; } $sql .= " AND pf.filter_id IN (" . implode(',', $implode) . ")"; } } if (!empty($data['filter_name']) || !empty($data['filter_tag'])) { $sql .= " AND ("; if (!empty($data['filter_name'])) { $implode = array(); $words = explode(' ', trim(preg_replace('/\s\s+/', ' ', $data['filter_name']))); foreach ($words as $word) { $implode[] = "pd.name LIKE '%" . $this->db->escape($word) . "%'"; } if ($implode) { $sql .= " " . implode(" AND ", $implode) . ""; } if (!empty($data['filter_description'])) { $sql .= " OR pd.description LIKE '%" . $this->db->escape($data['filter_name']) . "%'"; } } if (!empty($data['filter_name']) && !empty($data['filter_tag'])) { $sql .= " OR "; } if (!empty($data['filter_tag'])) { $sql .= "pd.tag LIKE '%" . $this->db->escape(utf8_strtolower($data['filter_tag'])) . "%'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.model) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.sku) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.upc) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.ean) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.jan) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.isbn) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.mpn) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } $sql .= ")"; } if (!empty($data['filter_manufacturer_id'])) { $sql .= " AND p.manufacturer_id = '" . (int)$data['filter_manufacturer_id'] . "'"; } $query = $this->db->query($sql); return $query->row['total']; } } Змінено 18 квітня 2016 користувачем Otvet Надіслати Поділитися на інших сайтах More sharing options... Rataban Опубліковано: 18 квітня 2016 Автор Share Опубліковано: 18 квітня 2016 Ошибку выбивает. Не хочу больше отнимать Ваше время, и так сайт вместо 25с грузится 5с, понаблюдаю пару дней, если опять сильно затупит, надо к спецу обращаться. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації Модуль Jet Cache SE - кешування, pagespeed, оптимізація магазинів [Поддержка] 1 2 3 4 75 Автор: markimax, 15 березня 2017 cache seo cms (і ще %d) Теги: cache seo cms кеширование кеш страниц кеш контроллеров кеш моделей скорость jet cache оптимизация запросы тормозит pagespeed 1 852 відповіді 240 549 переглядів markimax 13 жовтня pagespeed Мобільна версія OpenCart магазину Автор: Sha, 12 березня 2018 mobile speed без гмо (і ще %d) Теги: mobile speed без гмо 100/100 layout layout type mobile route mobile route adaptive usabiliti *pro* оптимизация скорость тормозит попугаи mobiledetect mobile version first mobile mobile header 0 коментарів 25 730 переглядів Sha 12 березня 2018 pagespeed Модуль Мобільна версія OpenCart магазину [Поддержка] 1 2 3 4 10 Автор: Sha, 12 березня 2018 mobile speed без гмо (і ще %d) Теги: mobile speed без гмо 100/100 layout layout type mobile route mobile route adaptive usabiliti *pro* оптимизация скорость тормозит попугаи mobiledetect mobile version first mobile mobile header 247 відповідей 38 357 переглядів Sha 31 жовтня 2021 Jet Cache SE - кешування, pagespeed, оптимізація магазинів Автор: markimax, 15 березня 2017 cache seo cms (і ще %d) Теги: cache seo cms кеширование кеш страниц кеш контроллеров кеш моделей скорость jet cache оптимизация запросы тормозит pagespeed 0 коментарів 102 955 переглядів markimax 15 березня 2017 Тормозит сайт! Помогите Автор: Pavel91, 3 березня 2019 тормозитсайт тормозит (і ще %d) Теги: тормозитсайт тормозит настройка медленныйсайт 5 відповідей 955 переглядів markimax 8 березня 2019 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Встановлення, оновлення, налаштування Внезапно тормозит сайт Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000 × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
OldAine Опубліковано: 17 квітня 2016 Share Опубліковано: 17 квітня 2016 Otvet Спасибо. Будем искать. OldAineДа у них на все один ответ, сервера работают в штатном режиме. Хотя хостинг Украина, вроде нормальный и тех поддержка есть. Сам уже думал, может поменять, но поможет ли...это вопрос. Кстати фактически нет никакой разницы в какой стране будет ваш хостинг, главное чтобы он был качественным. Я держу сайты на российском Reg.ru и он справляется, но это пока. Так-же рекомендую перейти на admin vps, говорят сайты становятся быстрее уже даже после переноса, без всяких оптимизаций. В будущем тоже планирую к ним уйти. Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 17 квітня 2016 Share Опубліковано: 17 квітня 2016 Кстати фактически нет никакой разницы в какой стране будет ваш хостинг, главное чтобы он был качественным. Я держу сайты на российском Reg.ru и он справляется, но это пока. Так-же рекомендую перейти на admin vps, говорят сайты становятся быстрее уже даже после переноса, без всяких оптимизаций. В будущем тоже планирую к ним уйти. Для РФ - критичен хостинг в ru-ix и днс там же. Для UA - так же критичнен хостинг в зоне ua-ix но в Укр средняя скорость на душу населения все таки больше. И расстояния поменьше. Встречал товарищей которые хостятся в USA - но простите, скорость передачи данных по проводам имеет физическую величину. И эта величина превращается на длинных растояних в реальные секунды. Надіслати Поділитися на інших сайтах More sharing options... Rataban Опубліковано: 17 квітня 2016 Автор Share Опубліковано: 17 квітня 2016 Вообщем полегчало :-D . Дальше пишу, может кому-то поможет. Какой- то модуль запрашивал просчет товаров в файле header.php. а так как этот файл везде, то тормозило абсолютно все.Благодаря ценным советам Otvet , нашел я где встречается gettotalproducts и оказалось в файле шаблона univer_menu.xml. После этого добавил строку предложенную Otvet (комментить нельзя, сразу ошибку выбивает) и случилось чудо. Сайт загрузился, меньше чем за секунду, что с ним никогда не бывало.Otvet огромадное спасибо! Всем ответившим так же благодарность! зы Ну и отдельное спасибо freelancer, за полезный мод.зыы Со спасибо закончил) Непонятно только, какого этот файл запрашивал просчет. Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 17 квітня 2016 Share Опубліковано: 17 квітня 2016 Вообщем полегчало :-D . Дальше пишу, может кому-то поможет. Какой- то модуль запрашивал просчет товаров в файле header.php. а так как этот файл везде, то тормозило абсолютно все. Благодаря ценным советам Otvet , нашел я где встречается gettotalproducts и оказалось в файле шаблона univer_menu.xml. После этого добавил строку предложенную Otvet (комментить нельзя, сразу ошибку выбивает) и случилось чудо. Сайт загрузился, меньше чем за секунду, что с ним никогда не бывало. Otvet огромадное спасибо! Всем ответившим так же благодарность! зы Ну и отдельное спасибо freelancer, за полезный мод. зыы Со спасибо закончил) Непонятно только, какого этот файл запрашивал просчет. Это недоделка 1.5 Но если в меню просчеты и можно выключить то в некоторых частях кода - не получится. Когда магазин разрастается до 3-4к товаров и на нем появляется трафик. Одним выкусыванием подсчета обойтись не получается в принципе. Надіслати Поділитися на інших сайтах More sharing options... Rataban Опубліковано: 18 квітня 2016 Автор Share Опубліковано: 18 квітня 2016 (змінено) snastik Недолго музыка играла. У меня даже повыкусывать не получается. Неубиваемый просто подсчет! Проблема явно в этом, как определить что включает этот ..... подсчет. slow (2).txt Змінено 18 квітня 2016 користувачем Rataban Надіслати Поділитися на інших сайтах More sharing options... Otvet Опубліковано: 18 квітня 2016 Share Опубліковано: 18 квітня 2016 он полностью и не будет убиваться, в контроллере категории должен оставаться выложите функцию gettotalproducts сюда под спойлер из файла catalog/model/catalog/product.php Надіслати Поділитися на інших сайтах More sharing options... Rataban Опубліковано: 18 квітня 2016 Автор Share Опубліковано: 18 квітня 2016 Выложил. В 2 местах встречается. public function getTotalProducts($data = array()) { if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getCustomerGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } $sql = "SELECT COUNT(DISTINCT p.product_id) AS total"; public function getTotalProductSpecials() { if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getCustomerGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } $query = $this->db->query("SELECT COUNT(DISTINCT ps.product_id) AS total FROM " . DB_PREFIX . "product_special ps LEFT JOIN " . DB_PREFIX . "product p ON (ps.product_id = p.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE p.status = '1' AND p.date_available <= '" . $this->NOW . "' AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND ps.customer_group_id = '" . (int)$customer_group_id . "' AND ((ps.date_start = '0000-00-00' OR ps.date_start < '" . $this->NOW . "') AND (ps.date_end = '0000-00-00' OR ps.date_end > '" . $this->NOW . "'))"); if (isset($query->row['total'])) { return $query->row['total']; } else { return 0; } } } ?> Надіслати Поділитися на інших сайтах More sharing options... Otvet Опубліковано: 18 квітня 2016 Share Опубліковано: 18 квітня 2016 втрое это акционные первый полностью выложите Надіслати Поділитися на інших сайтах More sharing options... Rataban Опубліковано: 18 квітня 2016 Автор Share Опубліковано: 18 квітня 2016 Вроде так. public function getTotalProducts($data = array()) { if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getCustomerGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } $sql = "SELECT COUNT(DISTINCT p.product_id) AS total"; if (!empty($data['filter_category_id'])) { if (!empty($data['filter_sub_category'])) { $sql .= " FROM " . DB_PREFIX . "category_path cp LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (cp.category_id = p2c.category_id)"; } else { $sql .= " FROM " . DB_PREFIX . "product_to_category p2c"; } if (!empty($data['filter_filter'])) { $sql .= " LEFT JOIN " . DB_PREFIX . "product_filter pf ON (p2c.product_id = pf.product_id) LEFT JOIN " . DB_PREFIX . "product p ON (pf.product_id = p.product_id)"; } else { $sql .= " LEFT JOIN " . DB_PREFIX . "product p ON (p2c.product_id = p.product_id)"; } } else { $sql .= " FROM " . DB_PREFIX . "product p"; } $sql .= " LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= '" . $this->NOW . "' AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'"; if (!empty($data['filter_category_id'])) { if (!empty($data['filter_sub_category'])) { $sql .= " AND cp.path_id = '" . (int)$data['filter_category_id'] . "'"; } else { $sql .= " AND p2c.category_id = '" . (int)$data['filter_category_id'] . "'"; } if (!empty($data['filter_filter'])) { $implode = array(); $filters = explode(',', $data['filter_filter']); foreach ($filters as $filter_id) { $implode[] = (int)$filter_id; } $sql .= " AND pf.filter_id IN (" . implode(',', $implode) . ")"; } } if (!empty($data['filter_name']) || !empty($data['filter_tag'])) { $sql .= " AND ("; if (!empty($data['filter_name'])) { $implode = array(); $words = explode(' ', trim(preg_replace('/\s\s+/', ' ', $data['filter_name']))); foreach ($words as $word) { $implode[] = "pd.name LIKE '%" . $this->db->escape($word) . "%'"; } if ($implode) { $sql .= " " . implode(" AND ", $implode) . ""; } if (!empty($data['filter_description'])) { $sql .= " OR pd.description LIKE '%" . $this->db->escape($data['filter_name']) . "%'"; } } if (!empty($data['filter_name']) && !empty($data['filter_tag'])) { $sql .= " OR "; } if (!empty($data['filter_tag'])) { $sql .= "pd.tag LIKE '%" . $this->db->escape(utf8_strtolower($data['filter_tag'])) . "%'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.model) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.sku) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.upc) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.ean) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.jan) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.isbn) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.mpn) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } $sql .= ")"; } if (!empty($data['filter_manufacturer_id'])) { $sql .= " AND p.manufacturer_id = '" . (int)$data['filter_manufacturer_id'] . "'"; } $query = $this->db->query($sql); return $query->row['total']; } Надіслати Поділитися на інших сайтах More sharing options... Otvet Опубліковано: 18 квітня 2016 Share Опубліковано: 18 квітня 2016 (змінено) А если так? public function getTotalProducts($data = array()) { if ((!isset($data['limit']))&&(!isset($data['start'))){return 0;} else{ if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getCustomerGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } $sql = "SELECT COUNT(DISTINCT p.product_id) AS total"; if (!empty($data['filter_category_id'])) { if (!empty($data['filter_sub_category'])) { $sql .= " FROM " . DB_PREFIX . "category_path cp LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (cp.category_id = p2c.category_id)"; } else { $sql .= " FROM " . DB_PREFIX . "product_to_category p2c"; } if (!empty($data['filter_filter'])) { $sql .= " LEFT JOIN " . DB_PREFIX . "product_filter pf ON (p2c.product_id = pf.product_id) LEFT JOIN " . DB_PREFIX . "product p ON (pf.product_id = p.product_id)"; } else { $sql .= " LEFT JOIN " . DB_PREFIX . "product p ON (p2c.product_id = p.product_id)"; } } else { $sql .= " FROM " . DB_PREFIX . "product p"; } $sql .= " LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= '" . $this->NOW . "' AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'"; if (!empty($data['filter_category_id'])) { if (!empty($data['filter_sub_category'])) { $sql .= " AND cp.path_id = '" . (int)$data['filter_category_id'] . "'"; } else { $sql .= " AND p2c.category_id = '" . (int)$data['filter_category_id'] . "'"; } if (!empty($data['filter_filter'])) { $implode = array(); $filters = explode(',', $data['filter_filter']); foreach ($filters as $filter_id) { $implode[] = (int)$filter_id; } $sql .= " AND pf.filter_id IN (" . implode(',', $implode) . ")"; } } if (!empty($data['filter_name']) || !empty($data['filter_tag'])) { $sql .= " AND ("; if (!empty($data['filter_name'])) { $implode = array(); $words = explode(' ', trim(preg_replace('/\s\s+/', ' ', $data['filter_name']))); foreach ($words as $word) { $implode[] = "pd.name LIKE '%" . $this->db->escape($word) . "%'"; } if ($implode) { $sql .= " " . implode(" AND ", $implode) . ""; } if (!empty($data['filter_description'])) { $sql .= " OR pd.description LIKE '%" . $this->db->escape($data['filter_name']) . "%'"; } } if (!empty($data['filter_name']) && !empty($data['filter_tag'])) { $sql .= " OR "; } if (!empty($data['filter_tag'])) { $sql .= "pd.tag LIKE '%" . $this->db->escape(utf8_strtolower($data['filter_tag'])) . "%'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.model) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.sku) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.upc) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.ean) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.jan) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.isbn) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.mpn) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } $sql .= ")"; } if (!empty($data['filter_manufacturer_id'])) { $sql .= " AND p.manufacturer_id = '" . (int)$data['filter_manufacturer_id'] . "'"; } $query = $this->db->query($sql); return $query->row['total']; } } Змінено 18 квітня 2016 користувачем Otvet Надіслати Поділитися на інших сайтах More sharing options... Rataban Опубліковано: 18 квітня 2016 Автор Share Опубліковано: 18 квітня 2016 Ошибку выбивает. Не хочу больше отнимать Ваше время, и так сайт вместо 25с грузится 5с, понаблюдаю пару дней, если опять сильно затупит, надо к спецу обращаться. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації Модуль Jet Cache SE - кешування, pagespeed, оптимізація магазинів [Поддержка] 1 2 3 4 75 Автор: markimax, 15 березня 2017 cache seo cms (і ще %d) Теги: cache seo cms кеширование кеш страниц кеш контроллеров кеш моделей скорость jet cache оптимизация запросы тормозит pagespeed 1 852 відповіді 240 549 переглядів markimax 13 жовтня pagespeed Мобільна версія OpenCart магазину Автор: Sha, 12 березня 2018 mobile speed без гмо (і ще %d) Теги: mobile speed без гмо 100/100 layout layout type mobile route mobile route adaptive usabiliti *pro* оптимизация скорость тормозит попугаи mobiledetect mobile version first mobile mobile header 0 коментарів 25 730 переглядів Sha 12 березня 2018 pagespeed Модуль Мобільна версія OpenCart магазину [Поддержка] 1 2 3 4 10 Автор: Sha, 12 березня 2018 mobile speed без гмо (і ще %d) Теги: mobile speed без гмо 100/100 layout layout type mobile route mobile route adaptive usabiliti *pro* оптимизация скорость тормозит попугаи mobiledetect mobile version first mobile mobile header 247 відповідей 38 357 переглядів Sha 31 жовтня 2021 Jet Cache SE - кешування, pagespeed, оптимізація магазинів Автор: markimax, 15 березня 2017 cache seo cms (і ще %d) Теги: cache seo cms кеширование кеш страниц кеш контроллеров кеш моделей скорость jet cache оптимизация запросы тормозит pagespeed 0 коментарів 102 955 переглядів markimax 15 березня 2017 Тормозит сайт! Помогите Автор: Pavel91, 3 березня 2019 тормозитсайт тормозит (і ще %d) Теги: тормозитсайт тормозит настройка медленныйсайт 5 відповідей 955 переглядів markimax 8 березня 2019 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Встановлення, оновлення, налаштування Внезапно тормозит сайт Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000 × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
snastik Опубліковано: 17 квітня 2016 Share Опубліковано: 17 квітня 2016 Кстати фактически нет никакой разницы в какой стране будет ваш хостинг, главное чтобы он был качественным. Я держу сайты на российском Reg.ru и он справляется, но это пока. Так-же рекомендую перейти на admin vps, говорят сайты становятся быстрее уже даже после переноса, без всяких оптимизаций. В будущем тоже планирую к ним уйти. Для РФ - критичен хостинг в ru-ix и днс там же. Для UA - так же критичнен хостинг в зоне ua-ix но в Укр средняя скорость на душу населения все таки больше. И расстояния поменьше. Встречал товарищей которые хостятся в USA - но простите, скорость передачи данных по проводам имеет физическую величину. И эта величина превращается на длинных растояних в реальные секунды. Надіслати Поділитися на інших сайтах More sharing options... Rataban Опубліковано: 17 квітня 2016 Автор Share Опубліковано: 17 квітня 2016 Вообщем полегчало :-D . Дальше пишу, может кому-то поможет. Какой- то модуль запрашивал просчет товаров в файле header.php. а так как этот файл везде, то тормозило абсолютно все.Благодаря ценным советам Otvet , нашел я где встречается gettotalproducts и оказалось в файле шаблона univer_menu.xml. После этого добавил строку предложенную Otvet (комментить нельзя, сразу ошибку выбивает) и случилось чудо. Сайт загрузился, меньше чем за секунду, что с ним никогда не бывало.Otvet огромадное спасибо! Всем ответившим так же благодарность! зы Ну и отдельное спасибо freelancer, за полезный мод.зыы Со спасибо закончил) Непонятно только, какого этот файл запрашивал просчет. Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 17 квітня 2016 Share Опубліковано: 17 квітня 2016 Вообщем полегчало :-D . Дальше пишу, может кому-то поможет. Какой- то модуль запрашивал просчет товаров в файле header.php. а так как этот файл везде, то тормозило абсолютно все. Благодаря ценным советам Otvet , нашел я где встречается gettotalproducts и оказалось в файле шаблона univer_menu.xml. После этого добавил строку предложенную Otvet (комментить нельзя, сразу ошибку выбивает) и случилось чудо. Сайт загрузился, меньше чем за секунду, что с ним никогда не бывало. Otvet огромадное спасибо! Всем ответившим так же благодарность! зы Ну и отдельное спасибо freelancer, за полезный мод. зыы Со спасибо закончил) Непонятно только, какого этот файл запрашивал просчет. Это недоделка 1.5 Но если в меню просчеты и можно выключить то в некоторых частях кода - не получится. Когда магазин разрастается до 3-4к товаров и на нем появляется трафик. Одним выкусыванием подсчета обойтись не получается в принципе. Надіслати Поділитися на інших сайтах More sharing options... Rataban Опубліковано: 18 квітня 2016 Автор Share Опубліковано: 18 квітня 2016 (змінено) snastik Недолго музыка играла. У меня даже повыкусывать не получается. Неубиваемый просто подсчет! Проблема явно в этом, как определить что включает этот ..... подсчет. slow (2).txt Змінено 18 квітня 2016 користувачем Rataban Надіслати Поділитися на інших сайтах More sharing options... Otvet Опубліковано: 18 квітня 2016 Share Опубліковано: 18 квітня 2016 он полностью и не будет убиваться, в контроллере категории должен оставаться выложите функцию gettotalproducts сюда под спойлер из файла catalog/model/catalog/product.php Надіслати Поділитися на інших сайтах More sharing options... Rataban Опубліковано: 18 квітня 2016 Автор Share Опубліковано: 18 квітня 2016 Выложил. В 2 местах встречается. public function getTotalProducts($data = array()) { if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getCustomerGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } $sql = "SELECT COUNT(DISTINCT p.product_id) AS total"; public function getTotalProductSpecials() { if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getCustomerGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } $query = $this->db->query("SELECT COUNT(DISTINCT ps.product_id) AS total FROM " . DB_PREFIX . "product_special ps LEFT JOIN " . DB_PREFIX . "product p ON (ps.product_id = p.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE p.status = '1' AND p.date_available <= '" . $this->NOW . "' AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND ps.customer_group_id = '" . (int)$customer_group_id . "' AND ((ps.date_start = '0000-00-00' OR ps.date_start < '" . $this->NOW . "') AND (ps.date_end = '0000-00-00' OR ps.date_end > '" . $this->NOW . "'))"); if (isset($query->row['total'])) { return $query->row['total']; } else { return 0; } } } ?> Надіслати Поділитися на інших сайтах More sharing options... Otvet Опубліковано: 18 квітня 2016 Share Опубліковано: 18 квітня 2016 втрое это акционные первый полностью выложите Надіслати Поділитися на інших сайтах More sharing options... Rataban Опубліковано: 18 квітня 2016 Автор Share Опубліковано: 18 квітня 2016 Вроде так. public function getTotalProducts($data = array()) { if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getCustomerGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } $sql = "SELECT COUNT(DISTINCT p.product_id) AS total"; if (!empty($data['filter_category_id'])) { if (!empty($data['filter_sub_category'])) { $sql .= " FROM " . DB_PREFIX . "category_path cp LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (cp.category_id = p2c.category_id)"; } else { $sql .= " FROM " . DB_PREFIX . "product_to_category p2c"; } if (!empty($data['filter_filter'])) { $sql .= " LEFT JOIN " . DB_PREFIX . "product_filter pf ON (p2c.product_id = pf.product_id) LEFT JOIN " . DB_PREFIX . "product p ON (pf.product_id = p.product_id)"; } else { $sql .= " LEFT JOIN " . DB_PREFIX . "product p ON (p2c.product_id = p.product_id)"; } } else { $sql .= " FROM " . DB_PREFIX . "product p"; } $sql .= " LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= '" . $this->NOW . "' AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'"; if (!empty($data['filter_category_id'])) { if (!empty($data['filter_sub_category'])) { $sql .= " AND cp.path_id = '" . (int)$data['filter_category_id'] . "'"; } else { $sql .= " AND p2c.category_id = '" . (int)$data['filter_category_id'] . "'"; } if (!empty($data['filter_filter'])) { $implode = array(); $filters = explode(',', $data['filter_filter']); foreach ($filters as $filter_id) { $implode[] = (int)$filter_id; } $sql .= " AND pf.filter_id IN (" . implode(',', $implode) . ")"; } } if (!empty($data['filter_name']) || !empty($data['filter_tag'])) { $sql .= " AND ("; if (!empty($data['filter_name'])) { $implode = array(); $words = explode(' ', trim(preg_replace('/\s\s+/', ' ', $data['filter_name']))); foreach ($words as $word) { $implode[] = "pd.name LIKE '%" . $this->db->escape($word) . "%'"; } if ($implode) { $sql .= " " . implode(" AND ", $implode) . ""; } if (!empty($data['filter_description'])) { $sql .= " OR pd.description LIKE '%" . $this->db->escape($data['filter_name']) . "%'"; } } if (!empty($data['filter_name']) && !empty($data['filter_tag'])) { $sql .= " OR "; } if (!empty($data['filter_tag'])) { $sql .= "pd.tag LIKE '%" . $this->db->escape(utf8_strtolower($data['filter_tag'])) . "%'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.model) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.sku) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.upc) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.ean) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.jan) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.isbn) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.mpn) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } $sql .= ")"; } if (!empty($data['filter_manufacturer_id'])) { $sql .= " AND p.manufacturer_id = '" . (int)$data['filter_manufacturer_id'] . "'"; } $query = $this->db->query($sql); return $query->row['total']; } Надіслати Поділитися на інших сайтах More sharing options... Otvet Опубліковано: 18 квітня 2016 Share Опубліковано: 18 квітня 2016 (змінено) А если так? public function getTotalProducts($data = array()) { if ((!isset($data['limit']))&&(!isset($data['start'))){return 0;} else{ if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getCustomerGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } $sql = "SELECT COUNT(DISTINCT p.product_id) AS total"; if (!empty($data['filter_category_id'])) { if (!empty($data['filter_sub_category'])) { $sql .= " FROM " . DB_PREFIX . "category_path cp LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (cp.category_id = p2c.category_id)"; } else { $sql .= " FROM " . DB_PREFIX . "product_to_category p2c"; } if (!empty($data['filter_filter'])) { $sql .= " LEFT JOIN " . DB_PREFIX . "product_filter pf ON (p2c.product_id = pf.product_id) LEFT JOIN " . DB_PREFIX . "product p ON (pf.product_id = p.product_id)"; } else { $sql .= " LEFT JOIN " . DB_PREFIX . "product p ON (p2c.product_id = p.product_id)"; } } else { $sql .= " FROM " . DB_PREFIX . "product p"; } $sql .= " LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= '" . $this->NOW . "' AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'"; if (!empty($data['filter_category_id'])) { if (!empty($data['filter_sub_category'])) { $sql .= " AND cp.path_id = '" . (int)$data['filter_category_id'] . "'"; } else { $sql .= " AND p2c.category_id = '" . (int)$data['filter_category_id'] . "'"; } if (!empty($data['filter_filter'])) { $implode = array(); $filters = explode(',', $data['filter_filter']); foreach ($filters as $filter_id) { $implode[] = (int)$filter_id; } $sql .= " AND pf.filter_id IN (" . implode(',', $implode) . ")"; } } if (!empty($data['filter_name']) || !empty($data['filter_tag'])) { $sql .= " AND ("; if (!empty($data['filter_name'])) { $implode = array(); $words = explode(' ', trim(preg_replace('/\s\s+/', ' ', $data['filter_name']))); foreach ($words as $word) { $implode[] = "pd.name LIKE '%" . $this->db->escape($word) . "%'"; } if ($implode) { $sql .= " " . implode(" AND ", $implode) . ""; } if (!empty($data['filter_description'])) { $sql .= " OR pd.description LIKE '%" . $this->db->escape($data['filter_name']) . "%'"; } } if (!empty($data['filter_name']) && !empty($data['filter_tag'])) { $sql .= " OR "; } if (!empty($data['filter_tag'])) { $sql .= "pd.tag LIKE '%" . $this->db->escape(utf8_strtolower($data['filter_tag'])) . "%'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.model) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.sku) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.upc) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.ean) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.jan) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.isbn) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.mpn) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } $sql .= ")"; } if (!empty($data['filter_manufacturer_id'])) { $sql .= " AND p.manufacturer_id = '" . (int)$data['filter_manufacturer_id'] . "'"; } $query = $this->db->query($sql); return $query->row['total']; } } Змінено 18 квітня 2016 користувачем Otvet Надіслати Поділитися на інших сайтах More sharing options... Rataban Опубліковано: 18 квітня 2016 Автор Share Опубліковано: 18 квітня 2016 Ошибку выбивает. Не хочу больше отнимать Ваше время, и так сайт вместо 25с грузится 5с, понаблюдаю пару дней, если опять сильно затупит, надо к спецу обращаться. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації Модуль Jet Cache SE - кешування, pagespeed, оптимізація магазинів [Поддержка] 1 2 3 4 75 Автор: markimax, 15 березня 2017 cache seo cms (і ще %d) Теги: cache seo cms кеширование кеш страниц кеш контроллеров кеш моделей скорость jet cache оптимизация запросы тормозит pagespeed 1 852 відповіді 240 549 переглядів markimax 13 жовтня pagespeed Мобільна версія OpenCart магазину Автор: Sha, 12 березня 2018 mobile speed без гмо (і ще %d) Теги: mobile speed без гмо 100/100 layout layout type mobile route mobile route adaptive usabiliti *pro* оптимизация скорость тормозит попугаи mobiledetect mobile version first mobile mobile header 0 коментарів 25 730 переглядів Sha 12 березня 2018 pagespeed Модуль Мобільна версія OpenCart магазину [Поддержка] 1 2 3 4 10 Автор: Sha, 12 березня 2018 mobile speed без гмо (і ще %d) Теги: mobile speed без гмо 100/100 layout layout type mobile route mobile route adaptive usabiliti *pro* оптимизация скорость тормозит попугаи mobiledetect mobile version first mobile mobile header 247 відповідей 38 357 переглядів Sha 31 жовтня 2021 Jet Cache SE - кешування, pagespeed, оптимізація магазинів Автор: markimax, 15 березня 2017 cache seo cms (і ще %d) Теги: cache seo cms кеширование кеш страниц кеш контроллеров кеш моделей скорость jet cache оптимизация запросы тормозит pagespeed 0 коментарів 102 955 переглядів markimax 15 березня 2017 Тормозит сайт! Помогите Автор: Pavel91, 3 березня 2019 тормозитсайт тормозит (і ще %d) Теги: тормозитсайт тормозит настройка медленныйсайт 5 відповідей 955 переглядів markimax 8 березня 2019 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Встановлення, оновлення, налаштування Внезапно тормозит сайт Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000 × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
Rataban Опубліковано: 17 квітня 2016 Автор Share Опубліковано: 17 квітня 2016 Вообщем полегчало :-D . Дальше пишу, может кому-то поможет. Какой- то модуль запрашивал просчет товаров в файле header.php. а так как этот файл везде, то тормозило абсолютно все.Благодаря ценным советам Otvet , нашел я где встречается gettotalproducts и оказалось в файле шаблона univer_menu.xml. После этого добавил строку предложенную Otvet (комментить нельзя, сразу ошибку выбивает) и случилось чудо. Сайт загрузился, меньше чем за секунду, что с ним никогда не бывало.Otvet огромадное спасибо! Всем ответившим так же благодарность! зы Ну и отдельное спасибо freelancer, за полезный мод.зыы Со спасибо закончил) Непонятно только, какого этот файл запрашивал просчет. Надіслати Поділитися на інших сайтах More sharing options...
snastik Опубліковано: 17 квітня 2016 Share Опубліковано: 17 квітня 2016 Вообщем полегчало :-D . Дальше пишу, может кому-то поможет. Какой- то модуль запрашивал просчет товаров в файле header.php. а так как этот файл везде, то тормозило абсолютно все. Благодаря ценным советам Otvet , нашел я где встречается gettotalproducts и оказалось в файле шаблона univer_menu.xml. После этого добавил строку предложенную Otvet (комментить нельзя, сразу ошибку выбивает) и случилось чудо. Сайт загрузился, меньше чем за секунду, что с ним никогда не бывало. Otvet огромадное спасибо! Всем ответившим так же благодарность! зы Ну и отдельное спасибо freelancer, за полезный мод. зыы Со спасибо закончил) Непонятно только, какого этот файл запрашивал просчет. Это недоделка 1.5 Но если в меню просчеты и можно выключить то в некоторых частях кода - не получится. Когда магазин разрастается до 3-4к товаров и на нем появляется трафик. Одним выкусыванием подсчета обойтись не получается в принципе. Надіслати Поділитися на інших сайтах More sharing options... Rataban Опубліковано: 18 квітня 2016 Автор Share Опубліковано: 18 квітня 2016 (змінено) snastik Недолго музыка играла. У меня даже повыкусывать не получается. Неубиваемый просто подсчет! Проблема явно в этом, как определить что включает этот ..... подсчет. slow (2).txt Змінено 18 квітня 2016 користувачем Rataban Надіслати Поділитися на інших сайтах More sharing options... Otvet Опубліковано: 18 квітня 2016 Share Опубліковано: 18 квітня 2016 он полностью и не будет убиваться, в контроллере категории должен оставаться выложите функцию gettotalproducts сюда под спойлер из файла catalog/model/catalog/product.php Надіслати Поділитися на інших сайтах More sharing options... Rataban Опубліковано: 18 квітня 2016 Автор Share Опубліковано: 18 квітня 2016 Выложил. В 2 местах встречается. public function getTotalProducts($data = array()) { if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getCustomerGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } $sql = "SELECT COUNT(DISTINCT p.product_id) AS total"; public function getTotalProductSpecials() { if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getCustomerGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } $query = $this->db->query("SELECT COUNT(DISTINCT ps.product_id) AS total FROM " . DB_PREFIX . "product_special ps LEFT JOIN " . DB_PREFIX . "product p ON (ps.product_id = p.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE p.status = '1' AND p.date_available <= '" . $this->NOW . "' AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND ps.customer_group_id = '" . (int)$customer_group_id . "' AND ((ps.date_start = '0000-00-00' OR ps.date_start < '" . $this->NOW . "') AND (ps.date_end = '0000-00-00' OR ps.date_end > '" . $this->NOW . "'))"); if (isset($query->row['total'])) { return $query->row['total']; } else { return 0; } } } ?> Надіслати Поділитися на інших сайтах More sharing options... Otvet Опубліковано: 18 квітня 2016 Share Опубліковано: 18 квітня 2016 втрое это акционные первый полностью выложите Надіслати Поділитися на інших сайтах More sharing options... Rataban Опубліковано: 18 квітня 2016 Автор Share Опубліковано: 18 квітня 2016 Вроде так. public function getTotalProducts($data = array()) { if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getCustomerGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } $sql = "SELECT COUNT(DISTINCT p.product_id) AS total"; if (!empty($data['filter_category_id'])) { if (!empty($data['filter_sub_category'])) { $sql .= " FROM " . DB_PREFIX . "category_path cp LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (cp.category_id = p2c.category_id)"; } else { $sql .= " FROM " . DB_PREFIX . "product_to_category p2c"; } if (!empty($data['filter_filter'])) { $sql .= " LEFT JOIN " . DB_PREFIX . "product_filter pf ON (p2c.product_id = pf.product_id) LEFT JOIN " . DB_PREFIX . "product p ON (pf.product_id = p.product_id)"; } else { $sql .= " LEFT JOIN " . DB_PREFIX . "product p ON (p2c.product_id = p.product_id)"; } } else { $sql .= " FROM " . DB_PREFIX . "product p"; } $sql .= " LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= '" . $this->NOW . "' AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'"; if (!empty($data['filter_category_id'])) { if (!empty($data['filter_sub_category'])) { $sql .= " AND cp.path_id = '" . (int)$data['filter_category_id'] . "'"; } else { $sql .= " AND p2c.category_id = '" . (int)$data['filter_category_id'] . "'"; } if (!empty($data['filter_filter'])) { $implode = array(); $filters = explode(',', $data['filter_filter']); foreach ($filters as $filter_id) { $implode[] = (int)$filter_id; } $sql .= " AND pf.filter_id IN (" . implode(',', $implode) . ")"; } } if (!empty($data['filter_name']) || !empty($data['filter_tag'])) { $sql .= " AND ("; if (!empty($data['filter_name'])) { $implode = array(); $words = explode(' ', trim(preg_replace('/\s\s+/', ' ', $data['filter_name']))); foreach ($words as $word) { $implode[] = "pd.name LIKE '%" . $this->db->escape($word) . "%'"; } if ($implode) { $sql .= " " . implode(" AND ", $implode) . ""; } if (!empty($data['filter_description'])) { $sql .= " OR pd.description LIKE '%" . $this->db->escape($data['filter_name']) . "%'"; } } if (!empty($data['filter_name']) && !empty($data['filter_tag'])) { $sql .= " OR "; } if (!empty($data['filter_tag'])) { $sql .= "pd.tag LIKE '%" . $this->db->escape(utf8_strtolower($data['filter_tag'])) . "%'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.model) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.sku) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.upc) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.ean) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.jan) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.isbn) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.mpn) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } $sql .= ")"; } if (!empty($data['filter_manufacturer_id'])) { $sql .= " AND p.manufacturer_id = '" . (int)$data['filter_manufacturer_id'] . "'"; } $query = $this->db->query($sql); return $query->row['total']; } Надіслати Поділитися на інших сайтах More sharing options... Otvet Опубліковано: 18 квітня 2016 Share Опубліковано: 18 квітня 2016 (змінено) А если так? public function getTotalProducts($data = array()) { if ((!isset($data['limit']))&&(!isset($data['start'))){return 0;} else{ if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getCustomerGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } $sql = "SELECT COUNT(DISTINCT p.product_id) AS total"; if (!empty($data['filter_category_id'])) { if (!empty($data['filter_sub_category'])) { $sql .= " FROM " . DB_PREFIX . "category_path cp LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (cp.category_id = p2c.category_id)"; } else { $sql .= " FROM " . DB_PREFIX . "product_to_category p2c"; } if (!empty($data['filter_filter'])) { $sql .= " LEFT JOIN " . DB_PREFIX . "product_filter pf ON (p2c.product_id = pf.product_id) LEFT JOIN " . DB_PREFIX . "product p ON (pf.product_id = p.product_id)"; } else { $sql .= " LEFT JOIN " . DB_PREFIX . "product p ON (p2c.product_id = p.product_id)"; } } else { $sql .= " FROM " . DB_PREFIX . "product p"; } $sql .= " LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= '" . $this->NOW . "' AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'"; if (!empty($data['filter_category_id'])) { if (!empty($data['filter_sub_category'])) { $sql .= " AND cp.path_id = '" . (int)$data['filter_category_id'] . "'"; } else { $sql .= " AND p2c.category_id = '" . (int)$data['filter_category_id'] . "'"; } if (!empty($data['filter_filter'])) { $implode = array(); $filters = explode(',', $data['filter_filter']); foreach ($filters as $filter_id) { $implode[] = (int)$filter_id; } $sql .= " AND pf.filter_id IN (" . implode(',', $implode) . ")"; } } if (!empty($data['filter_name']) || !empty($data['filter_tag'])) { $sql .= " AND ("; if (!empty($data['filter_name'])) { $implode = array(); $words = explode(' ', trim(preg_replace('/\s\s+/', ' ', $data['filter_name']))); foreach ($words as $word) { $implode[] = "pd.name LIKE '%" . $this->db->escape($word) . "%'"; } if ($implode) { $sql .= " " . implode(" AND ", $implode) . ""; } if (!empty($data['filter_description'])) { $sql .= " OR pd.description LIKE '%" . $this->db->escape($data['filter_name']) . "%'"; } } if (!empty($data['filter_name']) && !empty($data['filter_tag'])) { $sql .= " OR "; } if (!empty($data['filter_tag'])) { $sql .= "pd.tag LIKE '%" . $this->db->escape(utf8_strtolower($data['filter_tag'])) . "%'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.model) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.sku) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.upc) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.ean) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.jan) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.isbn) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.mpn) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } $sql .= ")"; } if (!empty($data['filter_manufacturer_id'])) { $sql .= " AND p.manufacturer_id = '" . (int)$data['filter_manufacturer_id'] . "'"; } $query = $this->db->query($sql); return $query->row['total']; } } Змінено 18 квітня 2016 користувачем Otvet Надіслати Поділитися на інших сайтах More sharing options... Rataban Опубліковано: 18 квітня 2016 Автор Share Опубліковано: 18 квітня 2016 Ошибку выбивает. Не хочу больше отнимать Ваше время, и так сайт вместо 25с грузится 5с, понаблюдаю пару дней, если опять сильно затупит, надо к спецу обращаться. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації Модуль Jet Cache SE - кешування, pagespeed, оптимізація магазинів [Поддержка] 1 2 3 4 75 Автор: markimax, 15 березня 2017 cache seo cms (і ще %d) Теги: cache seo cms кеширование кеш страниц кеш контроллеров кеш моделей скорость jet cache оптимизация запросы тормозит pagespeed 1 852 відповіді 240 549 переглядів markimax 13 жовтня pagespeed Мобільна версія OpenCart магазину Автор: Sha, 12 березня 2018 mobile speed без гмо (і ще %d) Теги: mobile speed без гмо 100/100 layout layout type mobile route mobile route adaptive usabiliti *pro* оптимизация скорость тормозит попугаи mobiledetect mobile version first mobile mobile header 0 коментарів 25 730 переглядів Sha 12 березня 2018 pagespeed Модуль Мобільна версія OpenCart магазину [Поддержка] 1 2 3 4 10 Автор: Sha, 12 березня 2018 mobile speed без гмо (і ще %d) Теги: mobile speed без гмо 100/100 layout layout type mobile route mobile route adaptive usabiliti *pro* оптимизация скорость тормозит попугаи mobiledetect mobile version first mobile mobile header 247 відповідей 38 357 переглядів Sha 31 жовтня 2021 Jet Cache SE - кешування, pagespeed, оптимізація магазинів Автор: markimax, 15 березня 2017 cache seo cms (і ще %d) Теги: cache seo cms кеширование кеш страниц кеш контроллеров кеш моделей скорость jet cache оптимизация запросы тормозит pagespeed 0 коментарів 102 955 переглядів markimax 15 березня 2017 Тормозит сайт! Помогите Автор: Pavel91, 3 березня 2019 тормозитсайт тормозит (і ще %d) Теги: тормозитсайт тормозит настройка медленныйсайт 5 відповідей 955 переглядів markimax 8 березня 2019 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Встановлення, оновлення, налаштування Внезапно тормозит сайт Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000
Rataban Опубліковано: 18 квітня 2016 Автор Share Опубліковано: 18 квітня 2016 (змінено) snastik Недолго музыка играла. У меня даже повыкусывать не получается. Неубиваемый просто подсчет! Проблема явно в этом, как определить что включает этот ..... подсчет. slow (2).txt Змінено 18 квітня 2016 користувачем Rataban Надіслати Поділитися на інших сайтах More sharing options...
Otvet Опубліковано: 18 квітня 2016 Share Опубліковано: 18 квітня 2016 он полностью и не будет убиваться, в контроллере категории должен оставаться выложите функцию gettotalproducts сюда под спойлер из файла catalog/model/catalog/product.php Надіслати Поділитися на інших сайтах More sharing options... Rataban Опубліковано: 18 квітня 2016 Автор Share Опубліковано: 18 квітня 2016 Выложил. В 2 местах встречается. public function getTotalProducts($data = array()) { if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getCustomerGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } $sql = "SELECT COUNT(DISTINCT p.product_id) AS total"; public function getTotalProductSpecials() { if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getCustomerGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } $query = $this->db->query("SELECT COUNT(DISTINCT ps.product_id) AS total FROM " . DB_PREFIX . "product_special ps LEFT JOIN " . DB_PREFIX . "product p ON (ps.product_id = p.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE p.status = '1' AND p.date_available <= '" . $this->NOW . "' AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND ps.customer_group_id = '" . (int)$customer_group_id . "' AND ((ps.date_start = '0000-00-00' OR ps.date_start < '" . $this->NOW . "') AND (ps.date_end = '0000-00-00' OR ps.date_end > '" . $this->NOW . "'))"); if (isset($query->row['total'])) { return $query->row['total']; } else { return 0; } } } ?> Надіслати Поділитися на інших сайтах More sharing options... Otvet Опубліковано: 18 квітня 2016 Share Опубліковано: 18 квітня 2016 втрое это акционные первый полностью выложите Надіслати Поділитися на інших сайтах More sharing options... Rataban Опубліковано: 18 квітня 2016 Автор Share Опубліковано: 18 квітня 2016 Вроде так. public function getTotalProducts($data = array()) { if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getCustomerGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } $sql = "SELECT COUNT(DISTINCT p.product_id) AS total"; if (!empty($data['filter_category_id'])) { if (!empty($data['filter_sub_category'])) { $sql .= " FROM " . DB_PREFIX . "category_path cp LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (cp.category_id = p2c.category_id)"; } else { $sql .= " FROM " . DB_PREFIX . "product_to_category p2c"; } if (!empty($data['filter_filter'])) { $sql .= " LEFT JOIN " . DB_PREFIX . "product_filter pf ON (p2c.product_id = pf.product_id) LEFT JOIN " . DB_PREFIX . "product p ON (pf.product_id = p.product_id)"; } else { $sql .= " LEFT JOIN " . DB_PREFIX . "product p ON (p2c.product_id = p.product_id)"; } } else { $sql .= " FROM " . DB_PREFIX . "product p"; } $sql .= " LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= '" . $this->NOW . "' AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'"; if (!empty($data['filter_category_id'])) { if (!empty($data['filter_sub_category'])) { $sql .= " AND cp.path_id = '" . (int)$data['filter_category_id'] . "'"; } else { $sql .= " AND p2c.category_id = '" . (int)$data['filter_category_id'] . "'"; } if (!empty($data['filter_filter'])) { $implode = array(); $filters = explode(',', $data['filter_filter']); foreach ($filters as $filter_id) { $implode[] = (int)$filter_id; } $sql .= " AND pf.filter_id IN (" . implode(',', $implode) . ")"; } } if (!empty($data['filter_name']) || !empty($data['filter_tag'])) { $sql .= " AND ("; if (!empty($data['filter_name'])) { $implode = array(); $words = explode(' ', trim(preg_replace('/\s\s+/', ' ', $data['filter_name']))); foreach ($words as $word) { $implode[] = "pd.name LIKE '%" . $this->db->escape($word) . "%'"; } if ($implode) { $sql .= " " . implode(" AND ", $implode) . ""; } if (!empty($data['filter_description'])) { $sql .= " OR pd.description LIKE '%" . $this->db->escape($data['filter_name']) . "%'"; } } if (!empty($data['filter_name']) && !empty($data['filter_tag'])) { $sql .= " OR "; } if (!empty($data['filter_tag'])) { $sql .= "pd.tag LIKE '%" . $this->db->escape(utf8_strtolower($data['filter_tag'])) . "%'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.model) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.sku) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.upc) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.ean) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.jan) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.isbn) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.mpn) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } $sql .= ")"; } if (!empty($data['filter_manufacturer_id'])) { $sql .= " AND p.manufacturer_id = '" . (int)$data['filter_manufacturer_id'] . "'"; } $query = $this->db->query($sql); return $query->row['total']; } Надіслати Поділитися на інших сайтах More sharing options... Otvet Опубліковано: 18 квітня 2016 Share Опубліковано: 18 квітня 2016 (змінено) А если так? public function getTotalProducts($data = array()) { if ((!isset($data['limit']))&&(!isset($data['start'))){return 0;} else{ if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getCustomerGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } $sql = "SELECT COUNT(DISTINCT p.product_id) AS total"; if (!empty($data['filter_category_id'])) { if (!empty($data['filter_sub_category'])) { $sql .= " FROM " . DB_PREFIX . "category_path cp LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (cp.category_id = p2c.category_id)"; } else { $sql .= " FROM " . DB_PREFIX . "product_to_category p2c"; } if (!empty($data['filter_filter'])) { $sql .= " LEFT JOIN " . DB_PREFIX . "product_filter pf ON (p2c.product_id = pf.product_id) LEFT JOIN " . DB_PREFIX . "product p ON (pf.product_id = p.product_id)"; } else { $sql .= " LEFT JOIN " . DB_PREFIX . "product p ON (p2c.product_id = p.product_id)"; } } else { $sql .= " FROM " . DB_PREFIX . "product p"; } $sql .= " LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= '" . $this->NOW . "' AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'"; if (!empty($data['filter_category_id'])) { if (!empty($data['filter_sub_category'])) { $sql .= " AND cp.path_id = '" . (int)$data['filter_category_id'] . "'"; } else { $sql .= " AND p2c.category_id = '" . (int)$data['filter_category_id'] . "'"; } if (!empty($data['filter_filter'])) { $implode = array(); $filters = explode(',', $data['filter_filter']); foreach ($filters as $filter_id) { $implode[] = (int)$filter_id; } $sql .= " AND pf.filter_id IN (" . implode(',', $implode) . ")"; } } if (!empty($data['filter_name']) || !empty($data['filter_tag'])) { $sql .= " AND ("; if (!empty($data['filter_name'])) { $implode = array(); $words = explode(' ', trim(preg_replace('/\s\s+/', ' ', $data['filter_name']))); foreach ($words as $word) { $implode[] = "pd.name LIKE '%" . $this->db->escape($word) . "%'"; } if ($implode) { $sql .= " " . implode(" AND ", $implode) . ""; } if (!empty($data['filter_description'])) { $sql .= " OR pd.description LIKE '%" . $this->db->escape($data['filter_name']) . "%'"; } } if (!empty($data['filter_name']) && !empty($data['filter_tag'])) { $sql .= " OR "; } if (!empty($data['filter_tag'])) { $sql .= "pd.tag LIKE '%" . $this->db->escape(utf8_strtolower($data['filter_tag'])) . "%'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.model) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.sku) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.upc) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.ean) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.jan) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.isbn) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.mpn) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } $sql .= ")"; } if (!empty($data['filter_manufacturer_id'])) { $sql .= " AND p.manufacturer_id = '" . (int)$data['filter_manufacturer_id'] . "'"; } $query = $this->db->query($sql); return $query->row['total']; } } Змінено 18 квітня 2016 користувачем Otvet Надіслати Поділитися на інших сайтах More sharing options... Rataban Опубліковано: 18 квітня 2016 Автор Share Опубліковано: 18 квітня 2016 Ошибку выбивает. Не хочу больше отнимать Ваше время, и так сайт вместо 25с грузится 5с, понаблюдаю пару дней, если опять сильно затупит, надо к спецу обращаться. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації Модуль Jet Cache SE - кешування, pagespeed, оптимізація магазинів [Поддержка] 1 2 3 4 75 Автор: markimax, 15 березня 2017 cache seo cms (і ще %d) Теги: cache seo cms кеширование кеш страниц кеш контроллеров кеш моделей скорость jet cache оптимизация запросы тормозит pagespeed 1 852 відповіді 240 549 переглядів markimax 13 жовтня pagespeed Мобільна версія OpenCart магазину Автор: Sha, 12 березня 2018 mobile speed без гмо (і ще %d) Теги: mobile speed без гмо 100/100 layout layout type mobile route mobile route adaptive usabiliti *pro* оптимизация скорость тормозит попугаи mobiledetect mobile version first mobile mobile header 0 коментарів 25 730 переглядів Sha 12 березня 2018 pagespeed Модуль Мобільна версія OpenCart магазину [Поддержка] 1 2 3 4 10 Автор: Sha, 12 березня 2018 mobile speed без гмо (і ще %d) Теги: mobile speed без гмо 100/100 layout layout type mobile route mobile route adaptive usabiliti *pro* оптимизация скорость тормозит попугаи mobiledetect mobile version first mobile mobile header 247 відповідей 38 357 переглядів Sha 31 жовтня 2021 Jet Cache SE - кешування, pagespeed, оптимізація магазинів Автор: markimax, 15 березня 2017 cache seo cms (і ще %d) Теги: cache seo cms кеширование кеш страниц кеш контроллеров кеш моделей скорость jet cache оптимизация запросы тормозит pagespeed 0 коментарів 102 955 переглядів markimax 15 березня 2017 Тормозит сайт! Помогите Автор: Pavel91, 3 березня 2019 тормозитсайт тормозит (і ще %d) Теги: тормозитсайт тормозит настройка медленныйсайт 5 відповідей 955 переглядів markimax 8 березня 2019 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Встановлення, оновлення, налаштування Внезапно тормозит сайт
Rataban Опубліковано: 18 квітня 2016 Автор Share Опубліковано: 18 квітня 2016 Выложил. В 2 местах встречается. public function getTotalProducts($data = array()) { if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getCustomerGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } $sql = "SELECT COUNT(DISTINCT p.product_id) AS total"; public function getTotalProductSpecials() { if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getCustomerGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } $query = $this->db->query("SELECT COUNT(DISTINCT ps.product_id) AS total FROM " . DB_PREFIX . "product_special ps LEFT JOIN " . DB_PREFIX . "product p ON (ps.product_id = p.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE p.status = '1' AND p.date_available <= '" . $this->NOW . "' AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND ps.customer_group_id = '" . (int)$customer_group_id . "' AND ((ps.date_start = '0000-00-00' OR ps.date_start < '" . $this->NOW . "') AND (ps.date_end = '0000-00-00' OR ps.date_end > '" . $this->NOW . "'))"); if (isset($query->row['total'])) { return $query->row['total']; } else { return 0; } } } ?> Надіслати Поділитися на інших сайтах More sharing options...
Otvet Опубліковано: 18 квітня 2016 Share Опубліковано: 18 квітня 2016 втрое это акционные первый полностью выложите Надіслати Поділитися на інших сайтах More sharing options... Rataban Опубліковано: 18 квітня 2016 Автор Share Опубліковано: 18 квітня 2016 Вроде так. public function getTotalProducts($data = array()) { if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getCustomerGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } $sql = "SELECT COUNT(DISTINCT p.product_id) AS total"; if (!empty($data['filter_category_id'])) { if (!empty($data['filter_sub_category'])) { $sql .= " FROM " . DB_PREFIX . "category_path cp LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (cp.category_id = p2c.category_id)"; } else { $sql .= " FROM " . DB_PREFIX . "product_to_category p2c"; } if (!empty($data['filter_filter'])) { $sql .= " LEFT JOIN " . DB_PREFIX . "product_filter pf ON (p2c.product_id = pf.product_id) LEFT JOIN " . DB_PREFIX . "product p ON (pf.product_id = p.product_id)"; } else { $sql .= " LEFT JOIN " . DB_PREFIX . "product p ON (p2c.product_id = p.product_id)"; } } else { $sql .= " FROM " . DB_PREFIX . "product p"; } $sql .= " LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= '" . $this->NOW . "' AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'"; if (!empty($data['filter_category_id'])) { if (!empty($data['filter_sub_category'])) { $sql .= " AND cp.path_id = '" . (int)$data['filter_category_id'] . "'"; } else { $sql .= " AND p2c.category_id = '" . (int)$data['filter_category_id'] . "'"; } if (!empty($data['filter_filter'])) { $implode = array(); $filters = explode(',', $data['filter_filter']); foreach ($filters as $filter_id) { $implode[] = (int)$filter_id; } $sql .= " AND pf.filter_id IN (" . implode(',', $implode) . ")"; } } if (!empty($data['filter_name']) || !empty($data['filter_tag'])) { $sql .= " AND ("; if (!empty($data['filter_name'])) { $implode = array(); $words = explode(' ', trim(preg_replace('/\s\s+/', ' ', $data['filter_name']))); foreach ($words as $word) { $implode[] = "pd.name LIKE '%" . $this->db->escape($word) . "%'"; } if ($implode) { $sql .= " " . implode(" AND ", $implode) . ""; } if (!empty($data['filter_description'])) { $sql .= " OR pd.description LIKE '%" . $this->db->escape($data['filter_name']) . "%'"; } } if (!empty($data['filter_name']) && !empty($data['filter_tag'])) { $sql .= " OR "; } if (!empty($data['filter_tag'])) { $sql .= "pd.tag LIKE '%" . $this->db->escape(utf8_strtolower($data['filter_tag'])) . "%'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.model) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.sku) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.upc) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.ean) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.jan) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.isbn) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.mpn) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } $sql .= ")"; } if (!empty($data['filter_manufacturer_id'])) { $sql .= " AND p.manufacturer_id = '" . (int)$data['filter_manufacturer_id'] . "'"; } $query = $this->db->query($sql); return $query->row['total']; } Надіслати Поділитися на інших сайтах More sharing options... Otvet Опубліковано: 18 квітня 2016 Share Опубліковано: 18 квітня 2016 (змінено) А если так? public function getTotalProducts($data = array()) { if ((!isset($data['limit']))&&(!isset($data['start'))){return 0;} else{ if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getCustomerGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } $sql = "SELECT COUNT(DISTINCT p.product_id) AS total"; if (!empty($data['filter_category_id'])) { if (!empty($data['filter_sub_category'])) { $sql .= " FROM " . DB_PREFIX . "category_path cp LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (cp.category_id = p2c.category_id)"; } else { $sql .= " FROM " . DB_PREFIX . "product_to_category p2c"; } if (!empty($data['filter_filter'])) { $sql .= " LEFT JOIN " . DB_PREFIX . "product_filter pf ON (p2c.product_id = pf.product_id) LEFT JOIN " . DB_PREFIX . "product p ON (pf.product_id = p.product_id)"; } else { $sql .= " LEFT JOIN " . DB_PREFIX . "product p ON (p2c.product_id = p.product_id)"; } } else { $sql .= " FROM " . DB_PREFIX . "product p"; } $sql .= " LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= '" . $this->NOW . "' AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'"; if (!empty($data['filter_category_id'])) { if (!empty($data['filter_sub_category'])) { $sql .= " AND cp.path_id = '" . (int)$data['filter_category_id'] . "'"; } else { $sql .= " AND p2c.category_id = '" . (int)$data['filter_category_id'] . "'"; } if (!empty($data['filter_filter'])) { $implode = array(); $filters = explode(',', $data['filter_filter']); foreach ($filters as $filter_id) { $implode[] = (int)$filter_id; } $sql .= " AND pf.filter_id IN (" . implode(',', $implode) . ")"; } } if (!empty($data['filter_name']) || !empty($data['filter_tag'])) { $sql .= " AND ("; if (!empty($data['filter_name'])) { $implode = array(); $words = explode(' ', trim(preg_replace('/\s\s+/', ' ', $data['filter_name']))); foreach ($words as $word) { $implode[] = "pd.name LIKE '%" . $this->db->escape($word) . "%'"; } if ($implode) { $sql .= " " . implode(" AND ", $implode) . ""; } if (!empty($data['filter_description'])) { $sql .= " OR pd.description LIKE '%" . $this->db->escape($data['filter_name']) . "%'"; } } if (!empty($data['filter_name']) && !empty($data['filter_tag'])) { $sql .= " OR "; } if (!empty($data['filter_tag'])) { $sql .= "pd.tag LIKE '%" . $this->db->escape(utf8_strtolower($data['filter_tag'])) . "%'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.model) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.sku) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.upc) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.ean) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.jan) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.isbn) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.mpn) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } $sql .= ")"; } if (!empty($data['filter_manufacturer_id'])) { $sql .= " AND p.manufacturer_id = '" . (int)$data['filter_manufacturer_id'] . "'"; } $query = $this->db->query($sql); return $query->row['total']; } } Змінено 18 квітня 2016 користувачем Otvet Надіслати Поділитися на інших сайтах More sharing options... Rataban Опубліковано: 18 квітня 2016 Автор Share Опубліковано: 18 квітня 2016 Ошибку выбивает. Не хочу больше отнимать Ваше время, и так сайт вместо 25с грузится 5с, понаблюдаю пару дней, если опять сильно затупит, надо к спецу обращаться. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації Модуль Jet Cache SE - кешування, pagespeed, оптимізація магазинів [Поддержка] 1 2 3 4 75 Автор: markimax, 15 березня 2017 cache seo cms (і ще %d) Теги: cache seo cms кеширование кеш страниц кеш контроллеров кеш моделей скорость jet cache оптимизация запросы тормозит pagespeed 1 852 відповіді 240 549 переглядів markimax 13 жовтня pagespeed Мобільна версія OpenCart магазину Автор: Sha, 12 березня 2018 mobile speed без гмо (і ще %d) Теги: mobile speed без гмо 100/100 layout layout type mobile route mobile route adaptive usabiliti *pro* оптимизация скорость тормозит попугаи mobiledetect mobile version first mobile mobile header 0 коментарів 25 730 переглядів Sha 12 березня 2018 pagespeed Модуль Мобільна версія OpenCart магазину [Поддержка] 1 2 3 4 10 Автор: Sha, 12 березня 2018 mobile speed без гмо (і ще %d) Теги: mobile speed без гмо 100/100 layout layout type mobile route mobile route adaptive usabiliti *pro* оптимизация скорость тормозит попугаи mobiledetect mobile version first mobile mobile header 247 відповідей 38 357 переглядів Sha 31 жовтня 2021 Jet Cache SE - кешування, pagespeed, оптимізація магазинів Автор: markimax, 15 березня 2017 cache seo cms (і ще %d) Теги: cache seo cms кеширование кеш страниц кеш контроллеров кеш моделей скорость jet cache оптимизация запросы тормозит pagespeed 0 коментарів 102 955 переглядів markimax 15 березня 2017 Тормозит сайт! Помогите Автор: Pavel91, 3 березня 2019 тормозитсайт тормозит (і ще %d) Теги: тормозитсайт тормозит настройка медленныйсайт 5 відповідей 955 переглядів markimax 8 березня 2019 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку
Rataban Опубліковано: 18 квітня 2016 Автор Share Опубліковано: 18 квітня 2016 Вроде так. public function getTotalProducts($data = array()) { if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getCustomerGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } $sql = "SELECT COUNT(DISTINCT p.product_id) AS total"; if (!empty($data['filter_category_id'])) { if (!empty($data['filter_sub_category'])) { $sql .= " FROM " . DB_PREFIX . "category_path cp LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (cp.category_id = p2c.category_id)"; } else { $sql .= " FROM " . DB_PREFIX . "product_to_category p2c"; } if (!empty($data['filter_filter'])) { $sql .= " LEFT JOIN " . DB_PREFIX . "product_filter pf ON (p2c.product_id = pf.product_id) LEFT JOIN " . DB_PREFIX . "product p ON (pf.product_id = p.product_id)"; } else { $sql .= " LEFT JOIN " . DB_PREFIX . "product p ON (p2c.product_id = p.product_id)"; } } else { $sql .= " FROM " . DB_PREFIX . "product p"; } $sql .= " LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= '" . $this->NOW . "' AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'"; if (!empty($data['filter_category_id'])) { if (!empty($data['filter_sub_category'])) { $sql .= " AND cp.path_id = '" . (int)$data['filter_category_id'] . "'"; } else { $sql .= " AND p2c.category_id = '" . (int)$data['filter_category_id'] . "'"; } if (!empty($data['filter_filter'])) { $implode = array(); $filters = explode(',', $data['filter_filter']); foreach ($filters as $filter_id) { $implode[] = (int)$filter_id; } $sql .= " AND pf.filter_id IN (" . implode(',', $implode) . ")"; } } if (!empty($data['filter_name']) || !empty($data['filter_tag'])) { $sql .= " AND ("; if (!empty($data['filter_name'])) { $implode = array(); $words = explode(' ', trim(preg_replace('/\s\s+/', ' ', $data['filter_name']))); foreach ($words as $word) { $implode[] = "pd.name LIKE '%" . $this->db->escape($word) . "%'"; } if ($implode) { $sql .= " " . implode(" AND ", $implode) . ""; } if (!empty($data['filter_description'])) { $sql .= " OR pd.description LIKE '%" . $this->db->escape($data['filter_name']) . "%'"; } } if (!empty($data['filter_name']) && !empty($data['filter_tag'])) { $sql .= " OR "; } if (!empty($data['filter_tag'])) { $sql .= "pd.tag LIKE '%" . $this->db->escape(utf8_strtolower($data['filter_tag'])) . "%'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.model) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.sku) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.upc) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.ean) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.jan) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.isbn) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.mpn) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } $sql .= ")"; } if (!empty($data['filter_manufacturer_id'])) { $sql .= " AND p.manufacturer_id = '" . (int)$data['filter_manufacturer_id'] . "'"; } $query = $this->db->query($sql); return $query->row['total']; } Надіслати Поділитися на інших сайтах More sharing options...
Otvet Опубліковано: 18 квітня 2016 Share Опубліковано: 18 квітня 2016 (змінено) А если так? public function getTotalProducts($data = array()) { if ((!isset($data['limit']))&&(!isset($data['start'))){return 0;} else{ if ($this->customer->isLogged()) { $customer_group_id = $this->customer->getCustomerGroupId(); } else { $customer_group_id = $this->config->get('config_customer_group_id'); } $sql = "SELECT COUNT(DISTINCT p.product_id) AS total"; if (!empty($data['filter_category_id'])) { if (!empty($data['filter_sub_category'])) { $sql .= " FROM " . DB_PREFIX . "category_path cp LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (cp.category_id = p2c.category_id)"; } else { $sql .= " FROM " . DB_PREFIX . "product_to_category p2c"; } if (!empty($data['filter_filter'])) { $sql .= " LEFT JOIN " . DB_PREFIX . "product_filter pf ON (p2c.product_id = pf.product_id) LEFT JOIN " . DB_PREFIX . "product p ON (pf.product_id = p.product_id)"; } else { $sql .= " LEFT JOIN " . DB_PREFIX . "product p ON (p2c.product_id = p.product_id)"; } } else { $sql .= " FROM " . DB_PREFIX . "product p"; } $sql .= " LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= '" . $this->NOW . "' AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'"; if (!empty($data['filter_category_id'])) { if (!empty($data['filter_sub_category'])) { $sql .= " AND cp.path_id = '" . (int)$data['filter_category_id'] . "'"; } else { $sql .= " AND p2c.category_id = '" . (int)$data['filter_category_id'] . "'"; } if (!empty($data['filter_filter'])) { $implode = array(); $filters = explode(',', $data['filter_filter']); foreach ($filters as $filter_id) { $implode[] = (int)$filter_id; } $sql .= " AND pf.filter_id IN (" . implode(',', $implode) . ")"; } } if (!empty($data['filter_name']) || !empty($data['filter_tag'])) { $sql .= " AND ("; if (!empty($data['filter_name'])) { $implode = array(); $words = explode(' ', trim(preg_replace('/\s\s+/', ' ', $data['filter_name']))); foreach ($words as $word) { $implode[] = "pd.name LIKE '%" . $this->db->escape($word) . "%'"; } if ($implode) { $sql .= " " . implode(" AND ", $implode) . ""; } if (!empty($data['filter_description'])) { $sql .= " OR pd.description LIKE '%" . $this->db->escape($data['filter_name']) . "%'"; } } if (!empty($data['filter_name']) && !empty($data['filter_tag'])) { $sql .= " OR "; } if (!empty($data['filter_tag'])) { $sql .= "pd.tag LIKE '%" . $this->db->escape(utf8_strtolower($data['filter_tag'])) . "%'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.model) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.sku) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.upc) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.ean) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.jan) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.isbn) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } if (!empty($data['filter_name'])) { $sql .= " OR LCASE(p.mpn) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'"; } $sql .= ")"; } if (!empty($data['filter_manufacturer_id'])) { $sql .= " AND p.manufacturer_id = '" . (int)$data['filter_manufacturer_id'] . "'"; } $query = $this->db->query($sql); return $query->row['total']; } } Змінено 18 квітня 2016 користувачем Otvet Надіслати Поділитися на інших сайтах More sharing options... Rataban Опубліковано: 18 квітня 2016 Автор Share Опубліковано: 18 квітня 2016 Ошибку выбивает. Не хочу больше отнимать Ваше время, и так сайт вместо 25с грузится 5с, понаблюдаю пару дней, если опять сильно затупит, надо к спецу обращаться. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0
Rataban Опубліковано: 18 квітня 2016 Автор Share Опубліковано: 18 квітня 2016 Ошибку выбивает. Не хочу больше отнимать Ваше время, и так сайт вместо 25с грузится 5с, понаблюдаю пару дней, если опять сильно затупит, надо к спецу обращаться. Надіслати Поділитися на інших сайтах More sharing options...
Recommended Posts