Как разбить на этапы процесс создания тысяч узлов программно - PullRequest
0 голосов
/ 14 февраля 2019

Мне нужно импортировать XML-файл в Drupal 8 и создавать узлы на основе его содержимого.Я пытаюсь сделать это в файле .theme (я не могу создать пользовательские модули), поэтому мой план:

  1. получить содержимое файла XML и проанализировать его;
  2. создать массив спроанализированные данные;
  3. "foreach" данные и создание узла на каждом шаге цикла (используя Node :: create), и это работает, но есть проблема, если мне нужно создать несколько тысяч узлов (например, 10000, есть огромные файлы xml), процесс может занять час (и, конечно, я не могу использовать Максимальное время выполнения = 0, оно ограничено 30 секундами).

Есть ли способыразделить процесс на этапы?Я пытался использовать пакеты, но если я правильно понял, их можно использовать только с формами.Также я подумал использовать Queue, но я не уверен, что смогу использовать Queue в файле .theme.

Пожалуйста, помогите мне с идеей, как разбить процесс на этапы

1 Ответ

0 голосов
/ 18 февраля 2019

Вы можете использовать модуль миграции Drupal 8 для настройки и обработки вашего импорта.Модуль migrate является частью ядра Drupal 8, поэтому не требует создания новых модулей и является одним из наиболее распространенных методов импорта большого количества узлов или других данных Drupal (таких как таксономии).

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

Руководства по работе с данными XML можно найти здесь: https://www.drupal.org/docs/8/api/migrate-api/migrate-source-plugins/migrating-data-from-xml-json-or-soap-source

Кроме того, вы можете использовать модуль Feeds .Ленты предназначены для постоянного импорта, например, с помощью RSS-канала, который постоянно обновляется, но также может использоваться для одноразового импорта.

...