К содержанию

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

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

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

Василий Наумкин
Василий Наумкин Администратор
12 января 2016, 10:32
DELETE FROM modx_site_content WHERE deleted = 1
    Любовь
    Любовь Проверенный
    12 января 2016, 10:44
    Как последний вариант можно и так. Дополнительные поля так не удаляться же?
      Лев Вербицкий
      Лев Вербицкий Проверенный
      12 января 2016, 11:04
      Нет, удалятся только ресурсы.
      Василий Столейков
      Василий Столейков Проверенный
      12 января 2016, 12:24
      Тоже волновал подобный вопрос, но немного другого характера. Нужно удалять удалённые ресурсы вместе со всеми связями (тв-шками) не из админки.
      Это возможно как-то сделать?
      Или прийдётся удалять с двух таблиц?
      Примерно так в цикле помеченных на удаление:
      DELETE FROM modx_site_tmplvar_contentvalues WHERE contentid = $id
      DELETE FROM modx_site_content WHERE deleted = 1
        Konstantin
        Konstantin Проверенный
        23 августа 2020, 12:49
        а можно подробнее, у меня в корзине 10000 ресурсов (товаров) с фото и тв-шками, и мне это как-то удалить надо
      Любовь
      Любовь Проверенный
      12 января 2016, 11:39
      Эх, ну раз других вариантов нет, удалю «в лоб». Всем спасибо.
        Василий Наумкин
        Василий Наумкин Администратор
        12 января 2016, 11:40
        ни в консоли браузера ни в админке ошибок никаких нет
        Версию движка обновить не могу — там древний хостинг, съехать с него тоже пока нельзя
        Какие тут еще могут быть варианты?
          Любовь
          Любовь Проверенный
          12 января 2016, 11:43
          Ну да, при таких условиях вариантов никаких.
          Сергей Шлоков
          Сергей Шлоков Эксперт
          12 января 2016, 13:03
          Почему, есть. Через процессор «resource/remove». Тогда должны удалиться и зависимые объекты.
            Любовь
            Любовь Проверенный
            12 января 2016, 18:19
            А можно подробнее как это сделать?
              Сергей Шлоков
              Сергей Шлоков Эксперт
              12 января 2016, 18:35
              Думаю, так должно работать
              // Процессор очистки корзины
              $response = $modx->runProcessor('resource/emptyrecyclebin');
              if ($response->isError()) $response->getMessage();
              Выполнять в специальном сниппете или Console.
              Ну а лучше конечно разобраться с ошибкой очистки через корзину.
                Любовь
                Любовь Проверенный
                12 января 2016, 21:07
                Спасибо большое! Проверю при случае. Оказалось во всех удаленных ресурсов не было дополнительных полей)
                  Сергей Шлоков
                  Сергей Шлоков Эксперт
                  12 января 2016, 23:28
                  Удаленные ресурсы также не должны быть в группах ресурсов.
                    Василий Столейков
                    Василий Столейков Проверенный
                    20 января 2016, 10:25
                    Спасибо! Но…
                    Процессор очистки корзины виснет, т.к. ресурсов около 100 тыс., а удалённых 15 тыс. Видно ему просто не хватает памяти для очистки всего.
                    Прийдётся видно вручную.
                    Значит мне, я полагаю, нужно:
                    1. удалить из modx_site_content WHERE deleted = 1
                    2. удалить из таблицы тв-шек modx_site_tmplvar_contentvalues все записи с id удалённой записи
                    3. удалить из таблицы групп ресурсов (что за таблица)?
                    4. откуда-то ещё удалить..?
                      Воеводский Михаил
                      Воеводский Михаил Проверенный
                      20 января 2016, 10:53
                      Либо многократно запускать очистку корзины вручную. Для 15000 ресурсов не так уж много раз должно потребоваться запускать очистку.
                        Василий Столейков
                        Василий Столейков Проверенный
                        20 января 2016, 17:11
                        Уже запускал до этого многократно, удаляя по 2-3 тысячи за раз. И глюкнула корзина. Может потому что у ресуросов много тв-шек было и он их всех обрабатывал…
                          Воеводский Михаил
                          Воеводский Михаил Проверенный
                          20 января 2016, 17:18
                          Смотри логи ошибок сервера. Наверняка 500 появляется, логи помогут ее отследить и исправить.
                            Василий Столейков
                            Василий Столейков Проверенный
                            20 января 2016, 17:28
                            Обновление движка не помогло.
                            Логи выводят что-то похожее:
                            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
                            Верно, переполнение памяти в чистом виде.

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

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

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

                            На всякий случай сохранил себе набросок кода в Console для ручного удаления — думаю ещё понадобится не раз…
                            Konstantin
                            Konstantin Проверенный
                            24 августа 2020, 07:32
                            со мной поделись :-) тоже надо
                            Maxim
                            Maxim Старожил
                            13 мая 2026, 01:07
                            Попробуй очистить кэш для проверки. Скорее всего, тоже вылетит ошибка переполнения.
                            Перенес сайт 2.8.7, php-8.4 на свой старый Core 2 Duo. Пока генерится кэш после удаления следов от плагинов, вижу сырой код и 100% загрузку процессора. Админка работает. Рандомные обновления страницы в админке и ожидание несколько минут решает проблему. По другому решить не получилось.
                            Maxim
                            Maxim Старожил
                            13 мая 2026, 10:45
                            upd. проблема в каком-то (или в нескольких) плагинах. Осталось понять где именно.
                      Сергей Шлоков
                      Сергей Шлоков Эксперт
                      20 января 2016, 13:31
                      4. откуда-то ещё удалить..?
                      Ещё могут быть установлены компоненты, которые хранят ссылку на ресурс.

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