Проверка актуальности данных в файле XML

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

Мысль такая — делать проверку и игнорировать запуск пресета по команде CRON, если дата в файле не соответствует текущей дате. Профит в снижении нагрузки на сервер.

Уважаемая команда CS-Cart, пожалуйста, прокомментируйте данное предложение по улучшению платформы.

Постараюсь прокомментировать :slight_smile: Но сразу скажу, что на форуме мы не гарантируем ответ в каждой теме. Т.е. подобные ответы — исключение, чем правило.


Ситуацию я осознал как “Иногда импорт работает вхолостую, если у продавца не изменился файл”. Идеального решения с ходу не нашёл. Везде есть нюансы, которые надо детальнее прорабатывать.

  • Проверять какие-то данные внутри файла — точно не вариант в массовом продукте. Импорт должен уметь работать с любыми XML-файлами. А даты внутри файла может и не быть.

    Т.е. если нужно именно читать дату в файле и исходя из неё принимать решение, то тут точно понадобится сторонняя доработка.

  • Более реалистичный и массовый вариант — запоминать контрольную сумму файла. При импорте сравнивать, и если она одинаковая, то не импортировать. Но тут тоже есть нюансы:

    • Cначала надо уточнить у программистов, есть ли способ сейчас отличить обычный импорт от импорта по CRON’у.

    • Даже если можно, решение может создать проблемы. Если файл не изменился, значит ли это, что все владельцы маркетплейсов не захотят его заново импортировать? Пока неизвестно. Могут появиться баг-репорты вида:

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

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

Преимущество доработки под себя тут в том, что вы точно знаете, что в вашем маркетплейсе не нужно импортировать файл, если он не менялся. Для вас это поведение очевидно, ожидаемо, и необходимо. И доработкой это получится сделать быстрее: какие-то нюансы “массового продукта” при доработке можно не учитывать, а конкурирующих задач нет.

более реалистичный вариант - дату изменения файла. Если дата совпадает - игнорируем, изменилась - импортируем. Ну и тогда настройка: импортировать в любом случае, или только если файл изменился

1 лайк