Opencart: генераторы sitemap.xml (Google Sitemap) и YML (Yandex.Market) для большого количества товаров

Решения, рассчитанные на большое количество товаров:

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

Главные проблемы стандартного генератора sitemap.xml, в котором по традиции всё делается в лоб и без оптимизаций:

  • из базы выбираются сразу все товары. На этом этапе при большом их количестве проблемы могут возникнуть как у сервера баз данных, так и с местом на временном разделе;
  • всё это передаётся PHP и в памяти формируется одна большая строка, содержащая весь XML. Только в конце она записывается в файл. На этом шаге тоже вполне можно упереться в ограничение доступной памяти;
  • а заодно можно легко упереться и в ограничение на время выполнения скрипта (по умолчанию обычно 30 секунд). И некоторые хостинги запрещают это время увеличивать (как раз для борьбы с ресурсоемкими и неоптимизированными скриптами). Впрочем, вряд ли магазин со 100 тысячами товаров будет пользоваться шаред хостингом. Но проблемы возникают и на более мелких количествах - порядка 20-30 тысяч. Хотя может даже и раньше (см. пост Yoda в блоге, первая ссылка - там речь о том, что уже и на 3000 бывают проблемы на некоторых серверах);
  • у гугла есть какие-то ограничения на размер файла sitemap.xml или максимальное количество позиций в нём.