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

Yesvik

Ветеран спільноти
  
  • Публікації

    1 939
  • З нами

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

Усі публікації користувача 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 ещё больше, смотри модули оплаты/доставки
×
×
  • Створити...

Important Information

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