Алексей П

Алексей П

Был в сети 07 июля 2020, 19:30
Заказы не принимаю
Спасибо. Если оставить только условие с датой, то работает. Но не пойму, как туда добавить доп условие
"localizator.key" => 'localizator_key' | option
Если делаю так
'where' => '["startDate > NOW() AND localizator.key = '~'localizator_key' | option~'"]'
то ругается
Unknown column 'ru' in 'where clause'
А с чего ты взял, что я не читал changelog?
[mFilter2] MS2 filters now respects system plugins to change price and weight of products. Can be disabled by «noPreciseMSFilters».
Где здесь хоть одно слово, что возможно замедление работы в 14 раз?
Анонсы, признаюсь, не читал. Виноват. Понадеялся, что в changelog исчерпывающая информация.
Еще один ответ от хостера. Смена типа таблицы не помогла. Я в тупике…
Ошибка возникает потому, что скрипту не хватает памяти для обработки. Создали для Вас дамп базы данных и изменили тип указанной таблицы.

К сожалению, это не оказало сильно значимого эффекта. Процесс PHP все равно при запуске производит крайне длительную обработку скрипта и большое количество SQL-запросов.

В данном случае мы можем порекомендовать Вам настроить кеширование страниц и результата обработки PHP в CMS сайта — данный механизм как правило и предназначен для случаев, когда оригинальная страница загружается долго.
Такая же проблема. Причем сайту уже более 2 лет, в последнее время ничего не менялось, на этапе создания сайта страницы грузились в несколько раз быстрее. Сейчас страницы с каталогом грузятся по 20-40 секунд.
Обратился к хостеру. Вот чего ответили
При запросе указанной страницы к таблице modx_ms2_product_options базы данных сайта отправляется большое количество запросов. Так как таблица имеет тип MyISAM, запросы обрабатываются по очереди, пока идет обработка одного, остальные ожидают.

Для того, чтобы запросы могли обрабатываться одновременно, можно изменить тип таблицы на InnoDB. Уточните, пожалуйста, у разработчика, возможен ли такой переход.
Добрый день. Запустил скрипт экспорта в фоновом режиме, подставив ссылку из админки
echo(shell_exec("nohup /usr/bin/php " . __DIR__ . "/assets/components/msimportexport/export.php?token=XXXXX > /dev/null & echo $!"));
На сайте более 20 000 позиций.
Как узнать, что экспорт уже закончился и где искать файл для экспорта?
Немного доработанная версия. Чтобы не запускать скрипт по несколько раз. Оставлю здесь для себя. Может еще кому-то пригодится.
Перед использованием нужно заменить параметр parent.

<?php
$step = 10;
$offset = isset($_SESSION['galgenoffset']) && $_SESSION['galgenoffset'] ? $_SESSION['galgenoffset'] : 0;
$modx->setLogLevel(MODX_LOG_LEVEL_ERROR);
$q = $modx->newQuery('modResource', array('parent' => 6007));
$total = $modx->getCount("modResource", $q);
$q->limit($step,$offset);
foreach($modx->getIterator("modResource", $q) as $doc){
	$doc->remove();
}

$_SESSION['galgenoffset'] = $offset + $step;
if ($_SESSION['galgenoffset'] >= $total) {
  $sucsess = 100;
  $_SESSION['Console']['completed'] = true;
  unset($_SESSION['galgenoffset']);
} else {
  $sucsess = round($_SESSION['galgenoffset'] / $total, 2) * 100;
  $_SESSION['Console']['completed'] = false;
}
for ($i=0; $i<=100; $i++) {
    if ($i <= $sucsess) {
        print '=';
    } else {
        print '_';
    }
}
$current = $_SESSION['galgenoffset'] ?
           $_SESSION['galgenoffset'] :
           ($sucsess == 100 ? $total : 0);
print "\n";
print $sucsess.'% ('.$current.')'."\n\n";