Kuongeza Uwezo wa Uingizaji wa CSV kwa Kutumia Laravel Job Batching

Wateja wa B2B SaaS mara nyingi hupakia faili kubwa. Wazia CSV yenye mistari 100,000.

Watengenezaji wengi hufanya kosa. Wanatumia loop kutuma kazi 100,000 tofauti za nyuma (background jobs). Hii husababisha matatizo.

Ikiwa kazi namba 45,000 itafeli, huna njia ya kumjulisha mtumiaji. Huwezi kufuatilia maendeleo. Huwezi kutuma barua pepe moja mara tu faili lote linapomalizika. Kazi hizo hazijaunganishwa.

Unahitaji Laravel Job Batching ili kutatua hili.

Suluhisho: Bus::batch()

Job batching huunganisha maelfu ya kazi katika kitengo kimoja. Laravel huipa kitengo hiki ID ya kipekee. Frontend yako hutumia ID hii kuonyesha progress bar. Pia inatoa hooks za kushughulikia mafanikio au kufeli.

Jinsi ya kuitekeleza:

  • Tumia generator inayolinda kumbukumbu (memory-safe) kusoma CSV yako.
  • Gawanya data yako katika vipande vinavyoweza kudhibitiwa (chunks).
  • Tumia Bus::batch() kuunganisha kazi hizo.
  • Tumia allowFailures() ili mstari mmoja mbaya usisimamishe mchakato mzima.

Lifecycle hooks hufanya kazi hivi:

  • then(): Huendeshwa tu ikiwa kila kazi imefanikiwa.
  • catch(): Huendeshwa wakati hitilafu ya kwanza inapotokea.
  • finally(): Huendeshwa wakati kazi zote zinapomalizika, hata kama baadhi zilifeli.

Faida kwa Watumiaji

Frontend yako ya React inaweza kufuatilia (poll) batch ID. Inaonyesha progress bar ya 0-100%. Hii inageuza kazi ya nyuma iliyojaa fumbo kuwa uzoefu wa wazi.

Thamani ya Kihandisi

Unapata udhibiti wa kazi zilizogawanywa. Unazuia kufeli kwa kimya kimya. Unatoa data ya wakati halisi (real-time) kwa watumiaji wako. Unahakikisha mantiki ya baada ya usindikaji (post-processing logic) inafanya kazi kwa wakati sahihi.

Chanzo: https://dev.to/iprajapatiparesh/scaling-csv-imports-master-laravel-job-batching-iaa