Сергей Шлоков

Сергей Шлоков

Был в сети 06 ноября 2025, 19:54
Заказы не принимаю
всё это давно прописано.
Ткни пальцем, просвяти нас немытых.

Ну я прям несказанно за тебя рад. Теперь напиши инструкцию по обходу — и я начну использовать ionCube, всем будет только веселее, правда?
Ты вообще что-ль нормально разучился разговаривать? Ничего мне не нужно уточнять, успокойся.
Как продавали поддержку, так и продаём
В
положении магазина дополнений modStore по этому поводу ничего не сказано. А в «Вопросах» отвечают, что продаётся дополнение.
А если продается техподдержка, а не лицензия, то почему нельзя использовать дополнение без техподдержки. В чём непорядочность разработчиков-неплатильщиков в юридическом смысле? Нигде же не сказано про обязательность техподдержки. И получается, что ты усложняешь жизнь разработчикам, которые формально ничего не нарушили. Они за техподдержку не платили — они её не получают.

Это вопрос скорее к ребятам из MODSTORE. Я как автор платных дополнений заинтересован в четких правилах, повышающих мои права и продажи.
До сих пор нет ясности, что же всё-таки мы продаём — компонент или техподдержку. В предыдущих обсуждениях остановились на том, что продаётся техподдержка на год.

По поводу защиты не стал заморачиваться. Ничто не мешает скупому, неблагодарному, бессовестному, беспринципному и наглому разработчику вместо пакета скопировать исходники с сайта-донора. Мы же помним, как такие разработчики собирали пакеты платных дополнений Василия с Гитхаба. Да, чуть сложнее. Но это вряд ли их остановит.
Данные по запросам к БД вызывают сомнение. Почему они разные?

Сравнивать тысячные доли? Это даже не погрешность, это погрешность погрешности. Пять раз обнови страницу, и пять раз цифры будут разные даже не меняя код.

Я когда переходил не феном тоже сравнивал. Разницы в скорости при вызове сниппетов через стандартный синтаксис и через феном никакой.
стандартный парсер запускается раньше, чем парсер фенома, из за чего сначала обработаются стандартные теги
Не путай человека.
Парсер MODX запускается перед феномом только для обработки кэшируемых тегов. Вообще парсинг выглядит так:
1. Запускается парсер MODX и обрабатывает кэшируемые теги. Феном теги остаются необработанные.
2. Запускается парсер фенома, если есть теги Fenom.
3. Запускается парсер MODX и обрабатывает некэшируемые теги пока они есть. Нераспарсенные не удаляются.
Пункты 2 и 3 могут выполняться в цикле до 10 раз, если есть нераспарсенные теги.
// В сниппет попадёт распарсенный тег феном
[[!snippet? param=`{$value}`]]
4. Запускается парсер фенома, если есть теги Fenom.
5. Запускается парсер MODX и обрабатывает некэшируемые теги пока они есть. Нераспарсенные теги удаляются.
Пункты 4 и 5 пункт могут выполняться в цикле до 10 раз, если есть нераспарсенные теги.
Многие, наверно, обращали внимание на тормоза, если указан несуществующий плейсхолдер.

Выглядит эта конструкция, мягко говоря, как вид жопы сбоку. У этих парсеров разный принцип работы. По хорошему, разработчикам MODX нужно или вообще отказываться от парсера и просто дать возможность пользователям самим выбирать (я сделал
маленький шажок в эту сторону) или дорабатывать его до более-менее функционального уровня (я это тоже пробовал).

Я бы посоветовал использовать оба парсера так:
— юзать только кэшируемые теги MODX ([[*tag]], [[$chunk]], [[++system]], [[snippet]]). Хорошо для оптимизации.
— для остального использовать феном.
В этих режимах парсеры не пересекаются.
Переделаешь под новый минишоп, отвалится текущий работающий функционал. Выход — делать oneBooking2 чисто под новый минишоп и получить проблему с апгрейдом. На всё это нужно время. Его пока нет. Тем более, что минишоп нужен только для привязки плагинов оплаты. А старый справляется с этим без проблем.
Я бы посоветовал кэшировать виджет «Прямой эфир». Хотя бы на минуту. При добавлении нового комментария или поста кэш сбрасывать. Уверен, время загрузки виджета снизиться драматически, а минуту мало кто заметит.

П.С. У меня работает отлично. Феном в помощь.
Очередь нужно организовать самостоятельно. Вариантов несколько. Я бы предложил использовать кэш.
Шаг 1. Отдельным скриптом сохранять письма в кэш.
users()
    ->profile()
    ->where('modUser.active = 1 AND DAYOFMONTH(FROM_UNIXTIME(Profile.dob)) = DAYOFMONTH(now()) AND MONTH(FROM_UNIXTIME(Profile.dob)) = MONTH(now())')
    ->save('birthdays');
В папке core/cache/queue появится файл birthdays.cache.php с массивом писем. У метода save() есть второй параметр, который отвечает за режим работы: true — пересоздать файл, false — дописать данные. По умолчанию, false. Т.е. очередь дописывается.

Шаг 2. Другим скриптом зачитывайте кэш, например, раз 10 минут в течение часа.
$emails = cache('birthdays', 'queue');
Бейте массив на 2 части. По первой части работаете (функция email), а вторую опять сохраняете в кэш.
cache()->set('birthdays', $emails, 'queue');
Берём modHelpers и чирикаем
users()
    ->profile()
    ->where('modUser.active = 1 AND DAYOFMONTH(FROM_UNIXTIME(Profile.dob)) = DAYOFMONTH(now()) AND MONTH(FROM_UNIXTIME(Profile.dob)) = MONTH(now())')
    ->each(function($user, $idx) {
        if (is_email($user['email'])) {
            email()->to($user['email'])->subject('Поздравляем с Днём рождения!')->tpl('chunkName', $user)->send();
        }
    });
Вызывать через cron.