scout:queue-import: Rychlejší indexování v Laravel Scout

Zrychlení indexování Laravel Scout pomocí scout:queue-import Pokud jste někdy čekali hodiny nebo dokonce dny pro php artisan scout:import dokončit indexování modelů, nejste sami....

Poptat web

05. 08. 2025

scout:queue-import: Rychlejší indexování v Laravel Scout

Zrychlení indexování Laravel Scout pomocí scout:queue-import

Pokud jste někdy čekali hodiny nebo dokonce dny pro php artisan scout:import dokončit indexování modelů, nejste sami. Přesně to má vyřešit nový příkaz, který přichází do Laravel Scout: scout:queue-import.

Nový příkaz Artisan, na kterém se podílel @ste_bau byl zaveden v PR #929, a je navržen tak, aby výrazně urychlil import milionů záznamů do vyhledávacích indexů díky efektivnějšímu využití systému front.

Problém s scout:import

Stávající scout:import příkaz projde celou tabulku, načte a následně postupně indexuje části modelů. Zatímco u menších souborů dat to funguje dobře, u velkých aplikací je to bolestně pomalé. I když používáte fronty, úlohy se odesílají po jedné až po načtení dalšího kusu.

Řešení: scout:queue-import

Nový scout:queue-import příkaz zcela mění přístup. Místo iterace přes tabulku:

  1. Vyhledá MIN a MAX hodnoty klíče Scout vašeho modelu (obvykle se jedná o id).
  2. Rozdělí tento rozsah na části (výchozí: 500) a vytvoří více rozsahů.
  3. Depeše a práce na rozsah pracovníkům ve frontě.

Vzhledem k tomu, že se před zařazením do fronty nemusíte dotazovat na celou databázi, je tato metoda mnohem efektivnější, zejména pokud mohou pracovníci fronty pracovat paralelně. S více spuštěnými pracovníky fronty lze úlohy zpracovávat paralelně, což není možné při sekvenční povaze databáze. scout:import příkaz.

Příklad použití - php artisan scout:queue-import

php artisan scout:queue-import "App\\Models\\Post"

Můžete si také přizpůsobit velikost kousku:

php artisan scout:queue-import "App\\Models\\Post" --chunk=1000

Rozsah můžete také přizpůsobit:

php artisan scout:queue-import "App\Models\Post" --min=10 --max=100

Důležité poznámky

  • Skautský klíč vašeho modelu musí být číselné a automaticky se zvyšující.. Pokud tomu tak není, příkaz vyhodí chybu a přeruší se.
  • Mezery v posloupnosti ID mohou způsobit, že úlohy budou indexovat méně záznamů. (nebo vůbec) v tomto rozsahu.
  • Musíte mít pracovníci ve frontě spuštěné a správně nakonfigurované pro zpracovávané úlohy.

Proč na tom záleží

Pokud pracujete s velkými soubory dat, scout:queue-import může změnit pravidla hry. Místo hodin nebo dnů čekání můžete rychle reindexovat miliony záznamů, aniž byste museli systém pozastavit.

Vyzkoušejte ji a urychlete svůj pracovní postup indexování vyhledávání pomocí Laravel Scout!

Původní článek publikoval Nabil Hassen.