Natknąłem się na to zarówno z zewnętrznymi modułami contrib, jak i niektórymi z moich własnych operacji. Jestem ciekawy różnych sposobów na przyspieszenie operacji wsadowych / contrib ?
Załóżmy, że pracują z węzłami (import / aktualizacja itp.), A my mamy do czynienia z analizowaniem list węzłów w zakresie ponad 10 000 (chociaż miałem do czynienia z 15 milionami wierszy .. co tak - jestem po prostu przykręcony. .)
Czy szybciej jest dołączyć do zadania cron.php drupals i uruchomić „bez głowy”? Używasz Drusha? czy jest to po prostu pytanie o to, jak wydajne i szybkie parsowanie mogę rozwinąć swój kod i nie ma zewnętrznych wpływów ani wskazówek dotyczących optymalizacji wsadowej ...
Obecnie natknąłem się na operacje, które (przy użyciu przybliżonych obliczeń) mogą potrwać ponad 24 godziny ...
Dzięki!
źródło
Każde wywołanie partii jest żądaniem HTTP. Musisz więc znaleźć idealne połączenie liczby iteracji, które możesz przetworzyć, zanim uruchomione zostanie kolejne żądanie HTTP. Dwie rzeczy do rozważenia to pamięć i maksymalny czas wykonania. Będziesz chciał przetworzyć jak najwięcej iteracji na partię, aby zmniejszyć liczbę żądań HTTP, ponieważ są one najprawdopodobniej winowajcą wolnej partii.
Jeśli partia jest po prostu zbyt ciężka, aby działała wydajnie, możesz zamiast tego spróbować użyć kolejki. Tutaj jest dobra prezentacja partii vs. kolejki http://sf2010.drupal.org/conference/sessions/batch-vs-queue-api-smackdown . Kolejki nie dostarczają opinii użytkowników i mogą być uruchamiane równolegle.
Jeśli potrzebujesz informacji zwrotnych od użytkowników, jesteś przywiązany do partii, ale możesz nawet użyć kolejki w partii, aby spróbować ją zoptymalizować.
źródło
Jak inni powiedzieli, Drush jest dobrym rozwiązaniem, ale kolejka jest doskonałym narzędziem do użycia. Batch API w Drupal 7 wykorzystuje wbudowany rdzeń API kolejki, więc jeśli używasz MySQL, twój proces może być wąski. Ale interfejs API kolejki Drupala 7 można podłączyć, więc możesz użyć innego systemu kolejek, takiego jak beanstalkd.
źródło
Jeśli potrafisz zrobić to równolegle, to dobry początek. Oto kilka moich przemyśleń na ten temat, ponieważ wykorzystałem 4 wątki do zindeksowania ponad miliona stron wcześniej (poprzez boost). Chcemy, aby teraz został uogólniony. http://groups.drupal.org/node/126624
źródło