Импортирую через 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 и видеть временнЫе затраты на каждый запрос, то как быть с кроном?
Комментарии
крон тоже можно дебажить, погуглите.
Ура! Разобрался сам.
Оказывается, есть такой параметр в settings.php: $conf['feeds_process_limit']. Это кол-во записей, которые обрабатываются фидом за один прием (по умолчанию 50). После обработки процесс ожидает подпинывания. При работе через браузер это подпинывание синхронизировано с отображением статуса прогресса на экране: кусок отработал - показал прогресс - запуcтил следующий кусок. В случае с Cron запуск следующего куска происходил при следующем запуске Cron (у меня это было через пять минут). Сейчас поставил этот параметр равным 2000 (все мои прайсы меньше по размеру) - все пролетает очень быстро.
а зачем тогда нужен крон )
если у вас загрузка будет производиться за 1 запуск
По правде говоря, не нашел другого способа иницировать обработку загруженного файла без захода в веб-интерфейс.