В модуле Migrate восьмерки есть такой предохранительный механизм от пожирания памяти:
если занятая процессом память больше чем 80% от memory_limit, то миграция останавливается с сообщением:
[warning] Memory usage is now 52.41 MB (5241% of limit 1 MB), not enough reclaimed, starting new batch
Но этот механизм у меня не работает по такой причине.
В php.ini стоит ограничение 128М
Это же значение я вижу, когда захожу в Status Report Drupal (admin/reports/status)
В файле, где описаны функции миграции MigrationExecutable.php, для получения значения memory_limit используется такой код:
$limit = trim(ini_get('memory_limit'));
if ($limit == '-1') {
$this->memoryLimit = PHP_INT_MAX;
}
else {
$this->memoryLimit = Bytes::toInt($limit);
}
Но когда я проверяю, значение переменной $limit, то вижу -1
То есть установки php.ini игнорируются
не могу понять откуда в данном случае ini_get берет это значение, ну и соответственно, как его изменить.
Миграция запускается через drush
Соответственно используется еще Migrate Tools и кастомный модуль с плагином, написанным по API
Ответы
Миграция запускается через drush
Drush - это консольная утилита.
Консольный PHP интерпретатор , так называемый PHP-CLI имеет свой конфигурационный файл
Пример пути - /etc/php/7.1/cli/php.ini
Думаю дело в том что drupal запускается под одним php, а drush под другим.
По этому и php.ini файлы у них разные.
В общем копайте в эту сторону.