Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Yesvik

Ветеран сообщества
  
  • Posts

    1,939
  • Joined

  • Last visited

Everything posted by Yesvik

  1. На больших объёмах json выигрывал. Какая ситуация в 7.2 я не тестил. Надо заморачиваться и сравнивать кодирование/декодирование на разных объёмах, с простыми и ассоциативными массивами, с ASCII и UTF-8
  2. Всё это не имеет отношения к обсуждаемой теме, но раз пошла такая пьянка - хочу видеть ini-файл в котором микс из объектов и массивов. После этого поговорим что быстрее с учетом накладных расходов на обслуживание.
  3. 5.6.38 Мои цифры это на ноуте с обычным HDD, поэтому такая разница. Но суть не в абсолютных значениях, а в соотношении...
  4. 1000 итераций PHP: 0.59930419921875 сек. JSON:0.61789894104004 сек. INI: 0.6460587978363 сек. В прикреплённом архиве файлы для самостоятельного тестирования. Тестируй и удивляйся... $max_index = 1000; echo "<pre>1000 итераций\n"; Timer::start(); for ($index = 0; $index < $max_index; $index++) { include 'cache.php'; } echo "PHP: ", Timer::finish(), " сек.\n"; Timer::start(); for ($index = 0; $index < $max_index; $index++) { $cache = json_decode(file_get_contents('cache.json')); } echo "JSON:", Timer::finish(), " сек.\n"; Timer::start(); for ($index = 0; $index < $max_index; $index++) { $cache = parse_ini_file('cache.ini', true);; } echo "INI: ", Timer::finish(), " сек.\n"; test.zip
  5. Я прекрасно понял твою идею, поэтому и спросил: как будешь рерайтить линки если нет вьюхи и вывод идёт мимо респонз, например пишешь в файл...
  6. Мой мод вернет ориджинал, но могу подключить транслит, а зачем? В аджминке все легко - там транслит уже все делает - остается только зафиксировать. не указанный алиас отображается красным.  Объясняю что и как делает твой код... Есть категория с category_id=11, подкатегория с category_id=22 и подподкатегория с category_id=33. Для category_id=11 задан алиас category Для category_id=22 не задан алиас Для category_id=33 задан алиас subcategory Твой алгоритм построит subcategory и это не правильно Описываю вариант когда для категории 33 не задан алиас Для category_id=11 задан алиас category Для category_id=22 задан алиас subcategory Для category_id=33 не задан алиас Твой алгоритм построит пустую строку! А в случае когда у товара нет алиаса твой алгоритм, в лучшем случае, построит ссылку на категорию, а не на товар.
  7. В коде, который ты выложил, я не вижу алгоритма построения категорий для товаров если в линке не указан path. Рассказать чем это чревато?
  8. Так это легко проверяется. Открой access.log и посмотри, обращается Pagespeed к robots.txt или нет... сильно удивишься )
  9. Скорее всего тут не нужны доработки. Пункт 1 делается настройкой "Географических зон" Пункт 2, с вероятностью близкой к единице, можно сделать настройкой сортировки модулей "Учитывать в заказе"
  10. Ему предлагали в 11 году, но он во первых упрямый, а во вторых - что такое Яндекс он вообще не знал, и ему пофиг что в Яше были проблемы.
  11. там проблема не в количестве товаров, просто при большом количестве товаров проблема явно видна... при малом количестве товара и большом трафике тоже будут проблемы... как говорится нефиг в файловый кеш дописывать )
  12. Извини, не удержался вырвать из контекста ) Не всё выводится через view и response... есть модуль который пишет фид в файл - как будешь рерайтить? $array_categories = explode('_', $value); foreach ($array_categories as $category_id) { if (isset($this->settings["category_id=" . $category_id])) $url .= $this->settings["category_id=" . $category_id] . '/'; else $url = ''; } Допустим у нас &path=11_22_33, для категории 22 не задан алиас, какой будет url? case 'product_id': $query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "url_alias` WHERE `query`='" . $this->db->escape('product_id=' . (int) $value) . "'"); if ($query->num_rows && $query->row['keyword']) $url .= $query->row['keyword']; unset($data['product_id']); break; Если в линке задан path, но для товара не задан алиас - какой будет url? Многие модули генерят линки на товары вот так: $this->url->link('product/product', 'product_id=' . $result['product_id']) Как будешь path строить? А будет модуль редиректить на правильную ссылку? Например товар из категории 11111/2222 перенесли в категорию 33333/4444 - будет редиректить? SEO_PRO это не рерайтер, точнее рерайт это второстепенный функционал.
  13. То что product не надо в файловый кеш писать - всё правильно. Основная идея SEO_PRO в наличии основной категории, а остальное у меня давно переписано ) Вот эта часть кода упрощена... ... потому что: Одним запросом выполняется выборка готового seo_url товара, т.е. на выходе строка category/subcategory/subsubcategory/product Одним запросом выполняется выборка готовых seo_url для всех категорий, причем в виде одной json_encode строки... Сейчас объясню для чего такой изврат Во первых БД возвращает 1 строку быстрее (и пофиг что она большая) Для сравнения: выборка одной json_encode строкой 1200 категорий с соответствующими им path в виде и простая выборка category_id по индексу, для тех же 1200 категорий, вот таким запросом: SELECT `category_id` FROM `oc_category` Выборка json_encode строки в 7,5 раз быстрее Во вторых получив много строк - нарываемся на цикл в system/library/db/mysql.php while ($result = mysql_fetch_assoc($resource)) { $data[$i] = $result; $i++; } В третьих вынуждены ещё раз обойти в цикле все записи для формирования массива в виде 'category_id' => 'готовый seo_url', что-то типа такого: $data = array(); foreach ($query->rows as $row) { $data[$row['category_id']] = $row['seo_url']; } Вместо всех этих циклов просто $data = json_decode($query->row['data']) и массив готов, его можно кидать в кеш на очень долго... кеш будет актуален пока не изменишь категорию... а при изменении категории кеш удалится. Времени не хватает допилить возможность использовать одинаковые алиасы в разных ветках категорий... допилю - выложу
  14. Про это здесь написано https://yandex.ru/support/webmaster/yandex-indexing/moving-site.html
  15. Это плохая идея писать идентификаторы поставщика в attribute_id
  16. Всё зависит от названия... допустим сайт yagoda, догадываешься что выдаст поисковик по запросу ягода? Всё может быть очень не просто.
  17. На eval ругается... и правильно делает
  18. SELECT MIN(IFNULL(ps.price, p.price)) AS min_price, MAX(IFNULL(ps.price, p.price)) AS max_price FROM ".DB_PREFIX."product AS p LEFT JOIN ".DB_PREFIX."product_to_category AS ptc USING(product_id) LEFT JOIN ".DB_PREFIX."product_special AS ps USING(product_id) WHERE IFNULL(ps.price, p.price) > 0 AND (ptc.category_id = ".(int)$category_id." OR ptc.category_id IN (SELECT path_id FROM ".DB_PREFIX."category_path WHERE category_id = ".(int)$category_id." AND level = 0)) AND p.quantity > 1 AND p.date_available <= NOW() Если для всех категорий с учетом подкатегорий - то одним запросом вот так SELECT path_id AS category_id, MIN(IFNULL(ps.price, p.price)) AS min_price, MAX(IFNULL(ps.price, p.price)) AS max_price FROM ".DB_PREFIX."product AS p LEFT JOIN ".DB_PREFIX."product_to_category AS ptc USING(product_id) LEFT JOIN ".DB_PREFIX."oc_category_path USING(category_id) LEFT JOIN ".DB_PREFIX."product_special AS ps USING(product_id) WHERE IFNULL(ps.price, p.price) > 0 AND path_id IS NOT NULL AND p.quantity > 1 AND p.date_available <= NOW() GROUP BY path_id
  19. Если кровь из носа пойдёт - наложи жгут на шею и желательно потуже...
  20. Видимо seo_url используешь Бороться можно по разному, но не понятно о какой сборке, какой версии и о каком модуле статей идёт речь
  21. Странно... может ты закоментил в оригинальном файле и не обновил модификаторы. Как вариант попробуй это <?php if ($config_counters) { ?> изменить вот так <?php if (!empty($config_counters)) { ?>
  22. Примеров API client ещё больше, смотри модули оплаты/доставки
×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.