Александр Туниеков

Александр Туниеков

С нами с 19 декабря 2015; Место в рейтинге пользователей: #15
Александр Туниеков
26 октября 2021, 03:54
+5
А вот и решение :-) PHP ошибка OpenSSL error:14090086 и Failed to enable crypto in
Оказывается у php свой список корневых сертификатов.
На openserver качаем cacert.pem с сайта https://curl.se/docs/caextract.html и заменяем им cacert.pem по пути
"%sprogdir%/userdata/config/cacert.pem"
Перезагружаем openserver и модсторе работает :-)
Александр Туниеков
26 октября 2021, 02:45
+2
В общем, сайты починил. Надо было поиск в инете сделать правильный :-).
Устранение ошибки ERR CERT DATE INVALID неверный сертификат
Но вот модсторе так и не заработал :-(.
30 Сентября 2021 произошло катастрофическое событие. У крупнейшего поставщика сертификатов Let's Encrypt истек корневой сертификат IdentTrust DST Root CA X3, который использовался на миллионах устройств, выпущенных или обновленных до 2015 года.

Были задеты не только ОС Windows, но и множество других девайсов — смартфоны, «маки», консоли старых поколений (PlayStation, Xbox).
Александр Туниеков
26 октября 2021, 02:00
0
Может поможет найти корень проблемы.
windows 2008 openserver. Пакеты с модсторе долго грузятся и не открываются. 20% сайтов не работают. Недели 2-3 назад заметил. Кажется кончился один из корневых сертификатов windows.
Помощи себе не прошу :-). но может поможет другим.
Знать бы еще какой из сертификатов улетел :-(. Просто обновление не помогает :-(.
Александр Туниеков
08 октября 2021, 05:24
0
Тоже с этой проблемой столкнулись. При загрузки модалки вызывается msOptionsPrice.Product.action('modification/get',form) и он ставит цену. Но не ставит опцию. Писали разрабу не ответил.
Кто знает что делать подскажите плиз!!!
Александр Туниеков
06 октября 2021, 00:42
+1
Мнда… Чудесный код :-). echo и getChunk. getChunk вообще ничего не делает. все через echo идет.
Попробуй лучше так:
Чанк
<div class="row">
    <div class="col-md-3">[[+Date]]</div>
    <div class="col-md-3">[[+Name]]</div>
    <div class="col-md-3">[[+LastName]]</div>
    <div class="col-md-3">[[+DepName]]</div>
</div>
сниппет
$result = $modx->query("SELECT * FROM $tableName ORDER BY id DESC LIMIT 27");
$data = $result->fetchAll(PDO::FETCH_ASSOC);
$out = '';
foreach ($data as $list){
        $out .= $modx->getChunk('OverlapCounter', $list);
}
return $out;
Александр Туниеков
24 сентября 2021, 21:20
0
Хм. ошибки не смотрел тогда. А сейчас минишоп уже откатили до прежней версии :)
Александр Туниеков
24 сентября 2021, 20:02
0
Владелец обновил минишоп. Сломался заказ. При создании заказа ни данных получателя ни адреса. Только товары. Фиг знает куда рыть.
Александр Туниеков
24 августа 2021, 21:55
0
Может плагин левый на изменение статуса заказа. Ну так не угодаешь. Надо цепочку создания заказа смотреть.
Могу посмотреть. Стоимость часа 600р. Если устраивает пиши на t.me/touols
Александр Туниеков
24 августа 2021, 12:55
0
У вас фильтры vlag_massiv и glubina_do_40 еще подключены и на них чанков почему-то нет
Александр Туниеков
22 августа 2021, 22:19
0
А какую ошибку выдает? И где? в коносоли? Можно скриншот?
Александр Туниеков
21 августа 2021, 10:30
0
2. А я добавил исключение
preg_match('/DISTINCT/i',
                        $fields)
В блоке
if ($fields == 'all' || $fields == '*' || empty($fields)) {
                        $fields = $this->modx->getSelectColumns($class, $alias);
                    } elseif(preg_match('/DISTINCT/i',
                        $fields)){
                    }else {
                        $fields = $this->modx->getSelectColumns($class, $alias, '',
                            array_map('trim', explode(',', $fields)));
                    }
3.
Это чудит xPDO.
В курсе. Если select строка, xPDO разбивает select по запятым и затем решает, что 1 это колонка и ставит апострофы.
Блок
if (is_string($fields) && strpos($fields, '(') !== false) {
                    // Commas in functions
                    $fields = preg_replace_callback('/\(.*?\)/', function($matches) {
                        return str_replace(",", "|", $matches[0]);
                    }, $fields);
                    $fields = explode(',', $fields);
                    foreach ($fields as &$field) {
                        $field = str_replace('|', ',', $field);
                    }
                    $this->query->select($fields);
                    $this->addTime('Added selection of <b>' . $class . '</b>: <small>' . str_replace('`' . $alias . '`.',
                            '', implode(',', $fields)) . '</small>', microtime(true) - $time);
                }
вообще не был бы нужен, если бы XPDO не чудила.

Но так как запрос простой и без логики, я бы не стал вообще использовать xPDO, а сделал бы маленький и лёгкий запрос (без кучи объектов xPDO)
У меня pdoTools в компонентах используется, чтобы изменить запрос не трогая сам компонент. Например из excelconvertrule
{
    "class": "MaterialZakupList",
    "leftJoin": {
        "MaterialZakup": {
            "class": "MaterialZakup",
            "on": "MaterialZakup.id = MaterialZakupList.order_id"
        },
        "gtsBAccount": {
            "class": "gtsBAccount",
            "on": "gtsBAccount.id = MaterialZakup.account_id"
        },
        "raschetsMaterial": {
            "class": "raschetsMaterial",
            "on": "raschetsMaterial.id = MaterialZakupList.mat_id"
        },
        "Orgs": {
            "class": "Orgs",
            "on": "Orgs.id = MaterialZakup.org_id"
        }
    },
    "select": {
        "MaterialZakupList": "*",
        "Orgs": "Orgs.shortname",
        "gtsBAccount": "gtsBAccount.label as account",
        "raschetsMaterial": "IF(MaterialZakupList.prihod_date IS NULL,'в дороге','получено') as status1,IF(MaterialZakupList.type_id = 3,raschetsMaterial.name,MaterialZakupList.tovar) as tovar1,raschetsMaterial.type,raschetsMaterial.metall,raschetsMaterial.ed_izm",
        "MaterialZakup": "MaterialZakup.date,MaterialZakup.document"
    },
    "sortby": {
        "MaterialZakupList.id": "ASC"
    }
}
При экспорте в excel без правок pdoTools на строке
IF(MaterialZakupList.prihod_date IS NULL,'в дороге','получено')
'в дороге' обрамляется апострофами.
Александр Туниеков
17 августа 2021, 19:37
+1
Отправил соточку :). С наумкиным не сложилось PR отправлять. Ошибки в pdoTools такие: кавычки неправильно ставит собака. Часто подсчет строк в кавычках, на функциях и where может неправильно кавычки поставит. Как вспомню где именно так отправлю Issues. В моей версии pdoTools они поправлены. Хотя и костылями.
Александр Туниеков
17 августа 2021, 19:27
0
Всем кому интересно. Где-то неверно скопировали. Сам применил и все заиграло как надо :-).
Александр Туниеков
17 августа 2021, 17:37
0
Ну вот :-(. На боевом сайте сразу тестировать не стоит. Надо копию, чтоб все обкатать можно было. У меня на локалке, после переноса с боевого, до всякого кеширования, сразу время работы с 4 секунд до минуты подлетело. Сейчас хотелось бы вне виндоус локалки протестировать. Можите все-таки сделать копию, чтоб не на локалке протестировать можно было?
Александр Туниеков
17 августа 2021, 16:43
0
Параметр cacheTime на 3600 включает кеширование запросов в базу
Параметр cacheTime больше 0 включает кеширование запросов в базу. 3600 это час жизни кеша.
Чтот косноязычно выражаюсь :-).
Александр Туниеков
17 августа 2021, 13:06
2
+1
Вообщем победил кеширование :-).
{'!mFilter2' | snippet : ['cacheTime'=>3600]}
Параметр cacheTime на 3600 включает кеширование запросов в базу. В mFilter2 кеширование не доработано. Сейчас 8 часов возился и сделал. Нужно заменить код файла core/components/msearch2/model/msearch2/msearch2.class.php кодом из https://gist.github.com/touol/a1c46d7fd199c0889c361c4075c28d39
К сожалению, не правя компонент, не исправишь кеширование.
На виндоус локалке при кешировании время ответа на категории с 4000 товаров сокращается с 30-60сек до 3-8сек со включенными подсказками. На боевом сайте не тестировал.
Можите попробовать у себя.
Можно еще ускорить вывод страницы кешируя сам выводmfilter2. Но это если договоримся по работе. Если что мой час стоит 600р.
Александр Туниеков
17 августа 2021, 10:59
0
Я нашел тяжелый сайт уже :-). Не настолько тяжелый как у вас, но 4000 товаров в категории есть. В mfilter2 есть встроенное кеширование, но оно не работает. Сейчас вожусь пробую его завести. Копия на локалке без кеша отрабатывает 30с, а с кешем 3с. Но сейчас сама фильтрация не заводиться. Как победю напишу.
Александр Туниеков
17 августа 2021, 03:50
0
Хотел разобраться, где mfilter2 тупит на больших сайта, но нет под рукой большого сайта примера. Можите сделать копию сайта и скинуть мне доступ?
Александр Туниеков
17 августа 2021, 03:26
0
А после загрузки страницы фильтр быстро работает?
Мы как-то кешировали вывод mfilter2 на страницу. Страницы тогда грузились быстро, но если нажать что-нибудь в фильтре то все равно фильтр за 3 секунды только отрабатывал. Если что компонент что делали могу поискать и скинуть.
Посмотрел сайт. Фильтрация тоже 12с у вас занимает. Так что кешеровать только вывод не решит проблему. mfilter2 на больших сайтах тупит. Надо его переделывать как-нибудь
Александр Туниеков
05 июля 2021, 11:17
0
1 Страница теста, скрытая из меню. На нее поместите
[[!UserTest? &answer_page_id=`22`]]