Выдано 134574 лицензии

Удаление элементов в корзине по частям за несколько запусков скрипта (аналогично переиндексации поиска)

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

(!) Это при том, что лимит на время выполнения скрипта не достигнут (с запасом).

Конечно, может ещё и от хостинга зависит, но гораздо лучше было бы если элементы из корзины удалялись не за один запуск скрипта, а за несколько (аналогично переиндексации в поиске). В таком случае 100% проблем не будет.

А то сейчас, например, потребовалось удалить из корзины несколько папок магазина, а они не удаляются. Плохо ещё что в корзине не видно сколько товаров в группе.

Посмотрел в базе, а там по 5000 - 15000 товаров в каждой папке..., так что из корзины даже одну такую папку не удалить - глючит (хотя лимит 800 сек.; хостинг beget).

Пришлось папку восстановить и удалять товары частями, а потом уже саму папку.

Если бы удаление элементов в корзине выполнялось за несколько запусков скриптов с лимитом на кол-во удаляемых элементов, как при переиндексации поиска, то о такой проблеме можно было бы забыть.

А тут у клиента в корзине накопилось примерно 50 000 товаров. Теперь понятно почему - сам удалить не может.

ArtemVM84 23.04.2022
0
43
4

Комментарии

  • Без темы

    Версия не старая
    Малый бизнес, 7.0.1

    Да, именно одна группа, в которой много товаров. В корзине 1 элемент, но много зависимых от него (товары). Лимит по времени не достигается 100%, просто ошибка 503 вылезала.

    В том-то и мысль была, чтобы зависимые элементы удалять частями. Не знаю насколько это возможно.

    Впрочем, не большая и проблема - просто незачем делать в одной группе по 10 000 товаров.

    25.04.2022 12:13:49 ArtemVM84

    Без темы

    К сожалению пошаговое удаление внутри удаления одного элемента пока не планируется к реализации, полагаю проще всего запросом пометить все элементы в данной группе удаленными и штатными средствами удалить элементы.

    Запрос:
    UPDATE `shop_items` SET `deleted` = 1 WHERE `shop_group_id` = 777;
    вместо 777 указать ИД удаленной группы

    25.04.2022 12:17:26 hostcms

    OK

    С пометкой товаров понятно - тогда помеченные товары появятся в корзине отдельно как товары и будут удаляться по частям.

    Ясно, вопрос решён.
    Спасибо.

    25.04.2022 12:21:15 ArtemVM84
  • Без темы

    В текущих версиях удаление и так происходит пошагово, вероятно у вас устаревшая версия.
    Также, судя по описанию, вы удалили атомарный элемент - группу, а не 50.000 товаров, в которой очень много связанных элементов. В таком случае лимит достигается при удалении самой атомарной группы с зависимыми элементами, при этом это всё один элемент в корзине.

    25.04.2022 12:08:51 hostcms