Я сталкивался с этим как с сторонними модулями, так и с некоторыми из моих собственных операций. Мне интересно, как можно ускорить пакетные операции моего / contrib ?
Предположим, они работают с узлами (импорт / обновление и т. Д.), И мы имеем дело с разбором списков узлов в диапазоне более 10000 (хотя мне приходилось иметь дело с 15 миллионами строк ... что да - я просто облажался. .)
Это быстрее, чтобы прикрепить к заданию drupals cron.php и запустить "без головы"? Используя Drush? или это просто вопрос того, насколько эффективно и быстро я могу разработать свой код, и нет никаких внешних влияний или конкретных советов по оптимизации ...
В настоящее время я столкнулся с операциями, которые (используя некоторые грубые вычисления) могли занять более 24 часов ...
Благодарность!
источник
Каждый пакетный вызов - это HTTP-запрос. Поэтому вам нужно найти идеальное сочетание того, сколько итераций вы можете обработать, прежде чем будет запущен другой HTTP-запрос. Следует учитывать две вещи: память и максимальное время выполнения. Вы захотите обработать как можно больше итераций для каждого пакета, чтобы уменьшить количество HTTP-запросов, поскольку они, скорее всего, являются причиной вашего медленного пакета.
Если ваш пакет слишком тяжел для эффективной работы, вы можете вместо этого попробовать использовать очередь. Здесь есть хорошая презентация «партия против очереди» http://sf2010.drupal.org/conference/sessions/batch-vs-queue-api-smackdown . Очереди не обеспечивают обратную связь с пользователем и могут выполняться параллельно.
Если вам требуется обратная связь с пользователем, вы привязаны к пакету, но вы можете даже использовать очередь в своем пакете, чтобы попытаться оптимизировать ее.
источник
Как уже говорили другие, Drush - хорошее решение, но очередь - отличный инструмент для использования. Пакетный API в Drupal 7 использует встроенное ядро API очереди, поэтому, если вы используете MySQL, ваш процесс может оказаться там узким местом. Но API очереди Drupal 7 является подключаемым, поэтому вы можете использовать другую систему очередей, такую как beanstalkd.
источник
Если вы можете сделать это параллельно, это хорошее начало. Вот некоторые из моих мыслей по этому поводу, поскольку я использовал 4 потока, чтобы пролистать более миллиона страниц раньше (с помощью надстройки). Смотря, чтобы сделать это обобщенным сейчас. http://groups.drupal.org/node/126624
источник