Ich bin sowohl mit Modulen von Drittanbietern als auch mit einigen meiner eigenen Operationen darauf gestoßen. Ich bin neugierig auf die verschiedenen Möglichkeiten, meine Batch-Vorgänge zu beschleunigen .
Angenommen, sie arbeiten mit Knoten (Import / Update usw.) und wir haben es mit Parsing-Listen von Knoten im Bereich von über 10.000 zu tun (obwohl ich mit 15 Millionen Zeilen zu tun hatte). .)
Ist es schneller, sich an drupals cron.php-Job anzuschließen und "kopflos" zu laufen? Verwenden Sie Drush? oder ist dies einfach eine Frage der Effizienz und Schnelligkeit des Parsings, mit der ich meinen Code entwickeln kann und ohne äußere Einflüsse oder chargenspezifische Optimierungstipps ...
Momentan bin ich auf Operationen gestoßen , die (mit groben Berechnungen) mehr als 24 Stunden dauern könnten ...
Vielen Dank!
quelle
Jeder Batch-Aufruf ist eine HTTP-Anforderung. Sie müssen also die perfekte Mischung aus der Anzahl der Iterationen finden, die Sie verarbeiten können, bevor eine andere HTTP-Anforderung ausgelöst wird. Zwei Dinge zu beachten sind Speicher und maximale Ausführungszeit. Sie sollten so viele Iterationen wie möglich pro Batch verarbeiten, um die Anzahl der HTTP-Anforderungen zu verringern, da dies höchstwahrscheinlich die Ursache für Ihren langsamen Batch ist.
Wenn Ihr Stapel einfach zu schwer ist, um effizient ausgeführt zu werden, können Sie stattdessen eine Warteschlange verwenden. Hier gibt es eine gute Darstellung von Batch vs. Queue: http://sf2010.drupal.org/conference/sessions/batch-vs-queue-api-smackdown . Warteschlangen geben kein Benutzerfeedback und können parallel ausgeführt werden.
Wenn Sie Benutzerfeedback benötigen, sind Sie an einen Stapel gebunden. Sie können jedoch auch die Warteschlange in Ihrem Stapel verwenden, um zu versuchen, ihn zu optimieren.
quelle
Wie andere gesagt haben, ist Drush eine gute Lösung, aber eine Warteschlange ist ein großartiges Werkzeug. Die Batch-API in Drupal 7 verwendet die integrierte Queue-Kern-API. Wenn Sie also MySQL verwenden, kann Ihr Prozess dort Engpässe aufweisen. Die Warteschlangen-API von Drupal 7 ist jedoch steckbar, sodass Sie ein anderes Warteschlangensystem wie beanstalkd verwenden können.
quelle
Wenn Sie es parallel machen können, ist das ein guter Anfang. Hier sind einige meiner Gedanken dazu, da ich zuvor mit 4 Threads über eine Million Seiten gecrawlt habe (via Boost). Ich möchte es jetzt verallgemeinern. http://groups.drupal.org/node/126624
quelle