[РЕШЕНО] Тормоза при запуске Feeds через Cron

Главные вкладки

Аватар пользователя Technician Technician 12 ноября 2012 в 15:32

Импортирую через Feeds товары в формате CSV в магазин на D7+Ubercart. Если загружать из браузера, то короткий файл из 200 записей обрабатывается за 15 секунд (есть и другие файлы, существенно больше). Но вручную это довольно хлопотное занятие и каждый день надоедает. Решили попробовать это автоматизировать и сделать регулярные выгрузки на FTP и чтобы оттуда уже Feeds подхватывал. И вот тут начались непонятные вещи. Те же 200 записей при запуске Feeds через Cron обрабатываются 20 минут! Можно заходить на страницу импорта и наблюдать изменение состояния импорта (по F5): 25%->50%->75%->100%. Каждый этап соответствует 50 записям из файла и занимает 5 минут.

На кроне еще висят BackupMigrate (раз в час бэкапит всю БД, укладывается в 10 секунд) и Boost (подчищает устаревшую статику, там вообще не больше секунды).

Что пробовал:
1. Почитал весь drupal.ru и issues по feeds на drupal.org по запросу "feeds cron", ничего конструктивного.
2. Пока разбирался, все модули на сайте обновил на последние версии (но не dev). Никакого эффекта.
3. Задал вопрос хостеру (dh.it-patrol.ru), говорят, что никаких низких приоритетов или чего-то подобного на Cron у них нет.
4. Ковырял настройки данного фида (галочки Authorize и Skip hash check) - никакой разницы.

Больше у меня пока мыслей нет. Главное, непонятно, как этот крон дебажить? Если при обычной генерации страниц можно подключить devel и видеть временнЫе затраты на каждый запрос, то как быть с кроном?

Комментарии

Аватар пользователя Technician Technician 12 ноября 2012 в 16:25

Ура! Разобрался сам.

Оказывается, есть такой параметр в settings.php: $conf['feeds_process_limit']. Это кол-во записей, которые обрабатываются фидом за один прием (по умолчанию 50). После обработки процесс ожидает подпинывания. При работе через браузер это подпинывание синхронизировано с отображением статуса прогресса на экране: кусок отработал - показал прогресс - запуcтил следующий кусок. В случае с Cron запуск следующего куска происходил при следующем запуске Cron (у меня это было через пять минут). Сейчас поставил этот параметр равным 2000 (все мои прайсы меньше по размеру) - все пролетает очень быстро.

Аватар пользователя Technician Technician 13 ноября 2012 в 0:36

По правде говоря, не нашел другого способа иницировать обработку загруженного файла без захода в веб-интерфейс.