Fronty a dávky
Každá kampaň je jedna dávka jobov Laravelu. prepare() otvorí prázdnu dávku na fronte odosielania — s allowFailures() a callbackom finally, ktorý kampaň ukončí, keď dobehnú všetky joby — a id dávky uloží ku kampani. start() potom do tejto dávky pridá jeden process-recipient-job na každého uloženého príjemcu; ak nie je komu posielať, kampaň sa dokončí hneď.
Workery
Nasmerujte frontu odosielania na vyhradenú frontu a spustite pre ňu worker:
CAMPAIGNS_SENDING_QUEUE=campaignsphp artisan queue:work --queue=campaignsDávka Laravelu zaraďuje všetky svoje joby do vlastnej fronty, preto sa dávka otvára na sending-queue (option DefaultSendingQueue) a každý job doručenia beží tam — zabezpečte, aby ju počúval worker.
Zlyhania a zrušenie
- Zlyhania sú povolené: jeden problémový príjemca nikdy nezastaví ostatných a kampaň sa dá stále zrušiť.
- Doručenie zlyhá, keď ho job zaznamená ako neúspešné — dodávané joby zachytia každú výnimku a urobia to — alebo keď zlyhá samotný job (vyhodí výnimku, vyprší mu čas, minie pokusy). V oboch prípadoch sa započíta raz, ako neúspešné, nikdy ako odoslané.
- Keď dobehnú všetky joby, kampaň je Completed — aj s neúspešnými príjemcami — alebo Failed, ak ani jedno doručenie neprešlo. Neúspešné doručenia nájdete cez progress->failed, udalosť RecipientFailed alebo dopytom na príjemcov.
- cancel() zruší dávku; joby vo fronte skontrolujú $this->batch()?->cancelled() a skončia bez odoslania. Zrušená kampaň zostane v stave Canceled, aj keď jej dávka dobehne.
Úložisko v pamäti a workery
Úložisko v pamäti žije počas jedného requestu, konzolového príkazu alebo jobu vo fronte — kontajner ho registruje ako scoped, takže dlho bežiaci worker v ňom kampane nehromadí. Ďalší request či job a každý queue worker začínajú s prázdnym úložiskom: doručenia aj udalosti vo workeri prebehnú, no priebeh sa sleduje len tam, kde kampaň vznikla. Keď musia byť stav a priebeh viditeľné naprieč requestmi a procesmi, použite databázové úložisko.
Prejavte lásku k open source
Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.
Ďalšie spôsoby podpory vrátane kryptomienOdoslaním daru súhlasíte s našimi podmienkami prijímania darov.
Chcete to zabudovať do svojho produktu?
Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.