Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

eugeneledenev

Новачок
  
  • Публікації

    37
  • З нами

  • Відвідування

Усі публікації користувача eugeneledenev

  1. Спасибо за комментарий!!! Реально все работает правильно! Редирект был к кеше, поэтому сделал неверный вывод. Сорри, что недосмотрел.
  2. Пытаюсь сейчас решить эту проблему. Этот вариант косячно работает. Переадресовывает ?page=15 на ?5
  3. Добрый день! Ищу исполнителя. ТЗ во вложении. Прошу оценить отдельно стоимость дизайна и верстки. ТЗ редизайн сайта venlamp.ru.docx
  4. Но насколько я понял кусок кода, который медленно выполняется им не поймать. Он всего лишь выводит список подключаемых файлов. А время по запросам у меня почти все сведено к минимуму.
  5. В общем запросы все в ноль вычистил, закешировал запросы и меню, все равно страница больше секунды считается. Чую что какой-то кусок кода делает ненужную фигню. Подскажите, как понять хотя бы какой php файл из всего множества тормозит? Нужен как бы профайлер модулей получается. Может функция в опенкарте есть которая в цикле модуль за модулем обрабатывает и можно как-то вывести модуль/время работы? OcStore 1.5.5.1
  6. Спасибо. Мне он для другого нужен, просто упростил задачу, чтобы не расписывать долго.
  7. Хотя наверное у меня правильнее так: header($this->request->server['SERVER_PROTOCOL'] . ' 301 Moved Permanently'); $this->response->redirect($seo);
  8. Вроде нашел: $this->response->redirect($seo) OpenCart has a built in redirect function as part of the response library. $this->response->redirect('your url goes here', 'http status code goes here');
  9. Нужно сделать к примеру 301 редирект, если в текущей категории нет товаров на категорию более высокого уровня. Что нужно написать в category.php после того как определили что товаров в категории ноль?
  10. >Совершенно неправильный подход. Нет в этой жизни хорошо, плохо, правильно, неправильно. Это все относительно в наших головах >То что вы выше привели - оптимизировать посредством правильных индексов в базу- просто семечки.>Просто немного нужно взять и почитать мануал к mysql Когда я просил помощи от Вас никакой конкретики не получил. Только " Можете меня называть как угодно и кем угодно, но я не готов опыт и знания, полученные на протяжении нескольких лет изысканий раздавать бесплатно!" Сейчас вы пишите, что все криво, но опять же без конкретики. По делу: Выборка о которой я писал сортирует и считает порядка 18 тыс товаров и SQL_CALC_FOUND_ROWS(он же COUNT), ORDER BY sort_order ASC, LCASE(name) ASC LIMIT 0,20 убивают скорость. Без подсчета кол-ва товаров и сортировок все летает. Мне очень сильно кажется, что с помощью индексов оптимизировать этот запрос невозможно. >Да где, сделал он ее!!!>А механизм апдейта забыл))) Механизм апдейта есть. Выложена сама функция. И поскольку ветка для программистов я решил что вызов этой функции кому надо сможет сделать сам. Теперь самое интересное: про "за деньги". Я руководитель и постоянно ищу исполнителей на те или иные работы. Программиста, который считает свою зарплату из расчета >60...80тыс руб в мес я не вытягиваю. Даже в этой ветке люди видят порядка 4 решений проблемы и почти любой подход имеет свои недостатки. Найти нормального программиста не просто. Люди считают, что они знают что делать, берут бабки и у них не получается решить задачу, а поскольку работы есть, то они предпочитают делать кнопки обратного звонка, лендинги и т.п. несложные задачи. На моей практике не было ни одного программиста, который мог бы нормально проверить результат своей работы, то есть сдать код без ошибок. Все равно рано или поздно что-то вылезает. Одно починил, другое сломал, т.к. никому неохота разбираться что тут до него делали и зачем. Так же проблема с нехваткой времени у тех кто работает за адекватные деньги, тебя записывают на "через месяц" и позже. Ну и само собой как всегда любой программист говорит что до него тут работал рукожопый дебил (точно так же делают стоматологи "да у вас все криво сделано, давайте ВСЕ переделаем"). Либо ответ на замечание: "Для этого нужно весь OPENCART переписать", хотя как оказывается позже 1 час работы несильно квалифицированного программиста. Очень часто мы думаем, что знаем как решить задачу, а когда начинаем решать всплывает всякая фигня и решение оказывается не таким простым. Мне этот форум много раз помогал, поэтому я выложил свое решение в надежде что кому-то оно может пригодиться. Если вы пишите что все сделано через жопу, предложите конкретное правильное по вашему мнению решение, если нет, то какой смысл писать?
  11. >Сейчас пришла идея убрать оттуда LEFT JOIN oc_product p ON (ps.product_id=p.product_id) и AND p.status = '1'. и засунуть это в формировании таблицы ps. Выполнил, время выполнения упало до 0,04сек.
  12. Решил, может кому пригодится. Увеличение скорости в 10 раз(до 0,15сек) Изменил вывод пагинации, убрал подсчет кол-ва товаров в текущей категории. В запросе : В категории оставляем все так же как и было Немного комментим/меняем пагинацию Результат: Итоговый запрос выглядит так: SELECT DISTINCT ps.product_id FROM oc_product_sort ps LEFT JOIN oc_product p ON (ps.product_id=p.product_id) LEFT JOIN oc_product_to_category p2c ON (p2c.product_id=ps.product_id) LEFT JOIN oc_category_path cp ON (cp.category_id=p2c.category_id) WHERE 1 AND cp.path_id IN (3587) AND p.status = '1' AND ps.sort_id='1' LIMIT 219,101 В этом запросе таблица ps - это отсортированные id товаров. Сейчас пришла идея убрать оттуда LEFT JOIN oc_product p ON (ps.product_id=p.product_id) и AND p.status = '1'. и засунуть это в формировании таблицы ps. И если кому интересно, формирование таблицы ps
  13. Это делается выборкой вместо LIMIT 20,20 я ставлю LIMIT 19,101 (101=20+20*4страницы+1) и смотрю сколько товаров вернул, верно? Ну и потом прибиваю первый и последний товар. Ну и лишние товары тоже.
  14. Есть индексы. http://prntscr.com/ebifc6 и http://prntscr.com/ebifjr - во второй правда какой-то двойной индекс по category_id. Не уверен что так должно быть. Тормоза в запросах начинаются как только в EXPAIN появляется надпись using temporary - это сортировки, count.
  15. Без подсчета товаров не будет работать пагинация. Сортировки хотелось бы оставить. По таблице pov - она пустая, тесты показали, что на скорость не влияет, поэтому пока что не вычистил ее из запроса.
  16. SELECT SQL_NO_CACHE SQL_CALC_FOUND_ROWS product_id FROM(SELECT DISTINCT p.product_id, pd.name, p.model, p.quantity, p.price, p.sort_order, p.date_added , p.price as realprice FROM oc_product p LEFT JOIN oc_product_option_value pov ON (pov.product_id=p.product_id) LEFT JOIN oc_product_description pd ON (pd.product_id=p.product_id) LEFT JOIN oc_product_to_category p2c ON (p2c.product_id=p.product_id) LEFT JOIN oc_category_path cp ON (cp.category_id=p2c.category_id) WHERE 1 AND cp.path_id IN (3558) AND pd.language_id = '1' AND p.status = '1' ) as innertable WHERE 1 ORDER BY sort_order ASC, LCASE(name) ASC LIMIT 0,20 oc_store 1.5.5, 100 тыс товаров, 4 тыс категорий. Выполняется 1-1,5сек. Как можно ускорить? Пробовал: Разделить запрос на 2 как в стандартном опенкарт(отдельно счетчик количества товаров в категории, отдельно выборка товаров). Плюс сделал таблицу в БД sort_id, product_id в которую для каждого типа сортировки загнал отсортированные id товаров, тем самым избавился от ORDER BY. Время выборки товаров уменьшилось до 0,15сек, но второй запрос который считает товары работает 0,7сек. Пробовал его и через count и тупо вывод всех данных без count, результат плюс-минус идентичный. Либо для подсчета товаров использовать кешированные данные, но запрос который мне выдал бы список всех id категорий и кол-ва товаров в них(с товарами подкатегорий) я написать так и не смог. Либо отказываться от пагинации в текущем виде и делать только кнопки следующая/предыдущая. Либо (на что я очень надеюсь) я лошара и все можно сделать намного проще и быстрее.
  17. ocstore 1.5.5. С php дружу месяц, так что прошу не пинать. Пишу доработку кеширования страниц целиком. Суть: цены меняются на start2544end, где 2544 - id товара. Затем страница кешируется. После этого производится подмена start2544end на цену товара. Подмену решил сделать в response.php(для новых страниц) и потом скопировать в модуль pagecache.php(для кешированных страниц), но когда пытаюсь оттуда вызвать sql запрос, то выдает ошибку Fatal error: Call to a member function get() on a non-object in C:\Webserver\domains\git.venlamp.ru\system\library\response.php on line 56. Как сделать чтобы работал стандартный класс по обработке sql запроса? Возможно у меня вообще неверный подход и нужно делать новый класс, а его как-то вызывать из response.php и из pagecache.php? public function output() { if ($this->output) { $this->output = str_replace('&page=1"', '"', $this->output); ..................................пропущено......................................................... if (preg_match_all('/pr_id_start(.*?)pr_id_end/', $this->output, $ids)) { $sql="SELECT product_id, price FROM " . DB_PREFIX . "product WHERE product_id IN (" . implode (", ",$ids[1]). ")"; $query = $this->db->query($sql); //Это не работает. // if ($query->num_rows) { // foreach ($query as $row) { // $this->output = str_replace ($this->output;"pr_id_start".$row['product_id']."pr_id_end",$row['price']); // } // } } И второй вопрос. Нужно поменять 20-100 id товара на цены. Есть ли смысл 100 раз вызывать str_replace или можно как-то стандартными функциями сделать замену за один проход? Типа str_replace_arr(строка, массив что на что меняем).
  18. Там JS в работу включается и обычные html подходы не работают. Я думаю нужно либо понять как его отключить для данного таба, либо подкорректировать чтобы переход на якорь был с помощью JS.
  19. ocstore 1.5.5.1.1. На странице товара есть ТАБ с названием характеристики. Сами характеристики я переместил под описанием товара+установил перед ними якорь. Таб остался. Как сделать так, чтобы при клике на этот таб был переход на якорь? При этом остальные ТАБы должны работать в обычном режиме. В js вообще ничего не понимаю. Странно, что поиском по форуму ничего не нашел.
  20. В модуле есть запись <h1 itemprop="name"><?php echo $heading_title; ?></h1> СЕОшники требуют чтобы осталось <h1>. Куда и как можно переместить itemprop="name" чтобы все корректно работало?
  21. Модуль формирует в коде страницы большое количество javascript вставок. Подскажите можно ли их все вынести в отдельный файл, если да, то это делается настройками модуля или нужно глобально модуль переписывать?
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.