Не удаляются удаленные ресурсы

Версия 2.3.2-pl. Удаляю ресурсы — они выделяются красным, но при попытке почистить корзину ничего не происходит: ни в консоли браузера ни в админке ошибок никаких нет.
Версию движка обновить не могу — там древний хостинг, съехать с него тоже пока нельзя.
Любовь
12 января 2016, 07:27
modx.pro
3
5 622
0

Комментарии: 25

Василий Наумкин
12 января 2016, 10:32
1
+1
DELETE FROM modx_site_content WHERE deleted = 1
    Любовь
    12 января 2016, 10:44
    0
    Как последний вариант можно и так. Дополнительные поля так не удаляться же?
    Василий Столейков
    12 января 2016, 12:24
    1
    0
    Тоже волновал подобный вопрос, но немного другого характера. Нужно удалять удалённые ресурсы вместе со всеми связями (тв-шками) не из админки.
    Это возможно как-то сделать?
    Или прийдётся удалять с двух таблиц?
    Примерно так в цикле помеченных на удаление:
    DELETE FROM modx_site_tmplvar_contentvalues WHERE contentid = $id
    DELETE FROM modx_site_content WHERE deleted = 1
      Konstantin
      23 августа 2020, 12:49
      0
      а можно подробнее, у меня в корзине 10000 ресурсов (товаров) с фото и тв-шками, и мне это как-то удалить надо
    Любовь
    12 января 2016, 11:39
    0
    Эх, ну раз других вариантов нет, удалю «в лоб». Всем спасибо.
      Василий Наумкин
      12 января 2016, 11:40
      0
      ни в консоли браузера ни в админке ошибок никаких нет
      Версию движка обновить не могу — там древний хостинг, съехать с него тоже пока нельзя
      Какие тут еще могут быть варианты?
        Любовь
        12 января 2016, 11:43
        0
        Ну да, при таких условиях вариантов никаких.
        Сергей Шлоков
        12 января 2016, 13:03
        0
        Почему, есть. Через процессор «resource/remove». Тогда должны удалиться и зависимые объекты.
          Любовь
          12 января 2016, 18:19
          0
          А можно подробнее как это сделать?
            Сергей Шлоков
            12 января 2016, 18:35
            2
            +1
            Думаю, так должно работать
            // Процессор очистки корзины
            $response = $modx->runProcessor('resource/emptyrecyclebin');
            if ($response->isError()) $response->getMessage();
            Выполнять в специальном сниппете или Console.
            Ну а лучше конечно разобраться с ошибкой очистки через корзину.
              Любовь
              12 января 2016, 21:07
              0
              Спасибо большое! Проверю при случае. Оказалось во всех удаленных ресурсов не было дополнительных полей)
                Сергей Шлоков
                12 января 2016, 23:28
                0
                Удаленные ресурсы также не должны быть в группах ресурсов.
                  Василий Столейков
                  20 января 2016, 10:25
                  0
                  Спасибо! Но…
                  Процессор очистки корзины виснет, т.к. ресурсов около 100 тыс., а удалённых 15 тыс. Видно ему просто не хватает памяти для очистки всего.
                  Прийдётся видно вручную.
                  Значит мне, я полагаю, нужно:
                  1. удалить из modx_site_content WHERE deleted = 1
                  2. удалить из таблицы тв-шек modx_site_tmplvar_contentvalues все записи с id удалённой записи
                  3. удалить из таблицы групп ресурсов (что за таблица)?
                  4. откуда-то ещё удалить..?
                    Воеводский Михаил
                    20 января 2016, 10:53
                    0
                    Либо многократно запускать очистку корзины вручную. Для 15000 ресурсов не так уж много раз должно потребоваться запускать очистку.
                      Василий Столейков
                      20 января 2016, 17:11
                      0
                      Уже запускал до этого многократно, удаляя по 2-3 тысячи за раз. И глюкнула корзина. Может потому что у ресуросов много тв-шек было и он их всех обрабатывал…
                        Воеводский Михаил
                        20 января 2016, 17:18
                        0
                        Смотри логи ошибок сервера. Наверняка 500 появляется, логи помогут ее отследить и исправить.
                          Василий Столейков
                          20 января 2016, 17:28
                          0
                          Обновление движка не помогло.
                          Логи выводят что-то похожее:
                          2016/01/19 17:24:33 [error] 25478#0: *38527366 FastCGI sent in stderr: "PHP message: PHP Fatal error:  Allowed memory size of 536870912 bytes exhausted (tried to allocate 72 bytes) in /home/s****/www/core/components/console/processors/exec.class.php(15) : eval()'d code on line 26" while reading response header from upstream, client: **.***.**.**, server: s****.h*.modhost.pro, request: "POST /manager/components/console/connectors/console.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:*****", host: "s****.h*.modhost.pro", referrer: "http://s****.h*.modhost.pro/manager/?a=18"
                          И да, сайт на modhost.pro на тарифе «Максимальный». Видно ему всё-же максимальной памяти не хватает чтобы очистить корзину…

                          И самое интересное, что корзина сломалась. Мне кажется, пока не перезагрузят сервер, корзина не отморозится…

                          Видно прийдётся вручную удалять строки из базы ресурсов и тв-шек…
                          Спасибо за помощь!
                          Воеводский Михаил
                          20 января 2016, 17:35
                          0
                          Верно, переполнение памяти в чистом виде.

                          Василий Столейков
                          20 января 2016, 17:38
                          0
                          Только вот как её очистить, память эту, не перезагружая сервер? До этого очистка корзины срабатывала через раз. сейчас даже если удалить один-единственный ресурс — очистка не запускается как замороженная…
                          Боюсь, даже если удалю всю базу ресурос и тв-шек и по-новой буду строить сайт, очистка не отвиснет сама по себе, как будтно где-то в фоне запущена…
                          Воеводский Михаил
                          20 января 2016, 17:43
                          0
                          Попробуй очистить кэш для проверки. Скорее всего, тоже вылетит ошибка переполнения.

                          Очищать память специально не нужно: она выделяется под каждое выполнение скрипта в отдельности.
                          Василий Столейков
                          20 января 2016, 17:49
                          +1
                          Спасибо за помощь!
                          У меня были отмечены для удаления те 15000 ресурсов (при наличии ещё 100 тысяч неудалённых) и корзина видно захлёбывалась. =)
                          Удалил вручную через Console из таблицы контента и тв-шек те что были помечены на удаление — и вуаля! Корзина отвисла и работает исправно… ))

                          Видно скармливать ей нужно небольшими порциями, чтобы не зажралась…

                          На всякий случай сохранил себе набросок кода в Console для ручного удаления — думаю ещё понадобится не раз…
                          Konstantin
                          24 августа 2020, 07:32
                          0
                          со мной поделись :-) тоже надо
                    Сергей Шлоков
                    20 января 2016, 13:31
                    1
                    +2
                    4. откуда-то ещё удалить..?
                    Ещё могут быть установлены компоненты, которые хранят ссылку на ресурс.

                    Попробуй создать плагин на событие OnBeforeEmptyTrash
                    // Удаляет ресурсы порцией по 1000, т.е. нажать на корзину нужно будет 15 раз. 
                    $resources = array_slice($resources , 0, 1000);
                    Теоретически должно сработать.
                      Василий Столейков
                      20 января 2016, 17:10
                      0
                      Классно, возьму на вооружение, но почему-то вообще зависло всё, уже полдня не реагирует ни процессор очистки корзины ни сама корзина. Просто до этого я удалял большими партиями по 2000 штук, удалял раз 7, видно накрылось что-то… Ничего не помогает его отморозить — попробую движок обновить.
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        25