Priebeh a vyhľadávanie
Vyhľadajte kampaň podľa UUID a prečítajte jej priebeh:
use RoundlyConsulting\Campaigns\Facades\Campaigns;
$campaign = Campaigns::find($uuid); // ?Campaign — null when unknown
$campaign = Campaigns::findOrFail($uuid); // throws CampaignNotFound when unknown
$progress = $campaign->progress; // CampaignProgress
$progress->status; // CampaignStatus, e.g. CampaignStatus::Processing
$progress->sent; // recipients delivered
$progress->failed; // deliveries that failed — never counted as sent
$progress->pending; // recipients with no outcome yet
$progress->total; // recipients in the campaign
$progress->percentage(); // sent / total * 100, rounded to 2 decimals
$progress->remaining(); // total - sent - failed, never below 0
$progress->isRunning(); // status is Processing
$progress->isComplete(); // status is Completed, Failed or Canceled
$campaign->startedAt; // ?Carbon — first switch to Processing
$campaign->endedAt; // ?Carbon — first terminal statusVyhľadávanie číta nastavené úložisko. Predvolené úložisko v pamäti žije len počas požiadavky, konzolového príkazu alebo jobu vo fronte, ktorý kampaň vytvoril. Keď sa táto požiadavka skončí, find() vráti null a findOrFail() aj campaign() vyhodia CampaignNotFound — rovnako z neskoršej požiadavky, z dashboardu, ktorý priebeh pravidelne načítava, aj z workera fronty. Ak chcete sledovať priebeh naprieč procesmi, prepnite na databázové úložisko (pozri Databázové úložisko).
Priebeh počíta každého príjemcu raz: sent boli doručené, failed zlyhali — job doručenia ich zaznamenal ako neúspešné alebo zlyhal samotný job (vyhodil výnimku, vypršal mu čas, minul pokusy) — a zvyšok ešte čaká. Neúspešné doručenie sa nikdy nezapočíta ako odoslané a kampaň predčasne neukončí. percentage() je podiel doručených bez zlyhaní a vracia 0.0, kým je total 0.
Kedy sa počítadlá aktualizujú
Počítadlá sa ukladajú pri každej zmene stavu — pri príprave, spustení, dokončení, zlyhaní a zrušení. Kým je kampaň v stave Pending alebo Processing, find(), all() aj progress() na handli čítajú živé čísla z jej príjemcov a dávky jobov, takže dashboard vidí priebeh počas doručovania. Samotnú dávku máte na jedno volanie:
use RoundlyConsulting\Campaigns\Facades\Campaigns;
$batch = Campaigns::campaign($campaign)->batch(); // ?Illuminate\Bus\Batch — null before prepare()
$batch?->progress(); // Laravel's own percentage
$batch?->pendingJobs; // jobs still waiting
$batch?->failedJobs; // jobs that failed outrightJednotliví príjemcovia majú vlastný stav — vypíšete ich cez Campaigns::campaign($uuid)->recipients() a jedného prečítate cez ->recipient($recipientUuid).
Výpis a zrušenie
use RoundlyConsulting\Campaigns\Campaign;
use RoundlyConsulting\Campaigns\Facades\Campaigns;
// A page of campaigns in creation order: offset, limit (defaults 0 and 10).
Campaigns::all(0, 25)->each(function (Campaign $campaign): void {
logger()->info($campaign->subject, $campaign->progress->toArray());
});
// Cancel a campaign and its batch — the status becomes Canceled.
$campaign = Campaigns::cancel($uuid); // a campaign that already ended comes back unchangedcancel() zruší dávku, presunie kampaň do stavu Canceled a vráti ju; už skončenú kampaň vráti bez zmeny. Joby, ktoré ešte čakajú vo fronte, zistia, že dávka je zrušená, a skončia bez odoslania. find() pre neznáme UUID vráti null; findOrFail(), campaign(), start() a cancel() vyhodia CampaignNotFound.
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.