Андрей Степаненко
С нами с 28 октября 2014; Место в рейтинге пользователей: #8Вчера в 15:28
Николай, прежде всего — вы молодец.
А про кеширование — можно пойти по правилу Парето.
То есть дать возможность закешировать самое частое — это ...
mFilter 1.2.0 - улучшенное кеширование и скорость 2
15 марта 2026, 20:35
Minishop2 это завершенная история. Архив. Крайне сомневаюсь, что в него будут добавляться какие то изменения. Это просто некому делать. Заинтересованн...
Порядок значений опций товара 10
15 марта 2026, 13:18
На всякий скопирую код для Bootstrap 4 (есть старый проект, лень переезжать на 5 версию):
/* Закрыть модальное окно после отправки */
document.addEve...
[SendIt] Несколько полезных нововведений в версии 1.1.2 27
13 марта 2026, 16:00
Предлагаю в целом обсудить понятие «вариант товара».
Я пришел к тому, что варианты — являются отдельными товарами. Возьмём для примера футболку. У ...
ms3Variants - Реализация вариантов одного товара в MiniShop3 7
12 марта 2026, 22:19
опытным путем выяснил что ошибку валидации радио кнопок можно вылечить добавив в форму еще один вариант
<input type="radio" name="...
Валидация radio кнопок в Sendit 1
11 марта 2026, 09:11
Привет!
Все верно:
1-го нет в магазине modstore и modx.com
2-й платный
mxEditorJs - блочный редактор Editor.js для MODX 3 2
10 марта 2026, 22:13
Все верно, сорян, в своем сообщении написал не то что хотел =)
msGiftCards - дополнение для MODX 2 + miniShop2 для продажи, применения и учета подарочных сертифика... 5
06 марта 2026, 09:38
Александр, данный компонент более недоступен для приобретения?
miniShop 2.9.1-pl 57
prnt.sc/rl5gmk
Там обычная проверка файла идет file_exits.
github.com/webnitros/siteDev/blob/103270a49c69539d934bafc4ff9f9891dde7a684/core/components/sitedev/Extras/modExtra/_build/build.php#L828
github.com/webnitros/modMySettings/blob/1152ca4862613fc0a37bcb3cdbea8fb2e268ab62/_build/build.transport.php#L163
Вообще вот здесь все происходит
prnt.sc/ri8x24
core/xpdo/transport/xpdovehicle.class.php 187 строка
github.com/webnitros/siteDev/tree/master/core/components/sitedev/Extras/modExtra
Еще считаю полезно прицепить вот такие кнопки
А то вспоминать откуда у тебя компонента скачивается, постоянное мучение.
Ссылка на то как кнопки добавить:
https://github.com/webnitros/siteDev/blob/103270a49c69539d934bafc4ff9f9891dde7a684/core/components/sitedev/Extras/modExtra/core/components/modextra/controllers/home.class.php#L91
Можно конечно в какой нибудь плагин завернуть, но я не стал заморачиваться, добавил их в контроллер с проверкой на существования папки Extras/myComponent, в случае если папка существует то кнопки показываются
Здесь все есть:
https://github.com/webnitros/modMySettings/blob/master/_build/setup.options.php
Еще момент: при удалении компонента, резолверы удаляют и папку с шаблоном. То есть все что положиться в core/elements/ будет уделено
Хотя последнее время, прихожу к идее, что любые массовые операции нужно фиксировать в таблице. После чего из нее получать к примеру последние 30 записей и производить массовые операции.
В этом плане и лог не нужен будет.
Получаем 30 записей отправляем их на exec_bg_script.
Ждем пока у этих 30 записей поставиться метка: завершено.
После чего получаем следующие 30 и продолжаем дальше.
Пока из обработки не уйдут все записи во временной таблице.
Так всегда можно отследить когда был запуск и завершение.
В общем нужна очередь, и какой то цикл который будет перезапускать всю эту процедуру.
Через ajax посылать все запросы разом к примеру в 1000 запросов, и не ждать ответа. Что то типо через цикл запустить.
Понятно что на 1000 ресурсов можно использовать. А если обновляется 100к ресурсов, Получается ответ не получен!
Очередь таких заданий забьет память и процессор.
Просто думаю как это встроить к примеру в msPre так как достаточно долго обновляется даже те же 2000 ресурсов при объеме в 100к.
Точней даже понимаю что это работать будет только, в безконтрольном режиме. И это проблема.
Ноооооо если мы используем getCollection) То innerJoin не позволит сделать select!
Так что скорость ощутим упадет))
Кстати, твой код, исключает getCollection. О чем я писал когда говорил о IN.
Так что если по играть, с кодом, то явно увидишь разницу.
return $objectCount;
}
в $objectCount запишется 0
Приходилось встречаться что в итоге 0 это тоже true, скорей всего это в старом каком то php
по этому лучше так
А теперь тоже самое только к примеру с получением pagetitle и price)
Вот тут явно увидите разницу
getCollection — дергает все поля как с site_content так и c ms2_products
Как он может быть быстрее даже с этого ракурса?
Обращение к msProduct?
Актуальность в одну минут, вообще не принципиально)))
Для таких запросов проще временную таблицу сделать куда будут данные сливаться на бэкенде, и потом уже готовые данные забирать на фронте.
Такими запросами, только фронт напрягать.
Почему то всегда охота все в один запрос запихать, но по опыту еще больше времени тратишь на всякие такие выборки.
Еще как вариант делать несколько запросов и получать id которые уже потом идут where в виде product_id IN (тут список id из какой то таблицы)
На примере получения товаров:
Этот код будет делать выборку в десятки раз быстрее:
Чем
join — зло еще то))