NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky
Campaigns for Laravel

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 status

Vyhľ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 outright

Jednotliví 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 unchanged

cancel() 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 kryptomien

Odoslaní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.