sql >> Database >  >> NoSQL >> Redis

Laravel - Taken in volgorde uitvoeren

Waar u naar op zoek bent, zoals u in uw vraag aangeeft, is job chaining.

Van de Laravel-documenten

Taakketening stelt u in staat een lijst met taken in de wachtrij op te geven die in volgorde moeten worden uitgevoerd. Als één taak in de reeks mislukt, worden de rest van de taken niet uitgevoerd. Om een ​​opdrachtketen in de wachtrij uit te voeren, kunt u de withChain-methode gebruiken voor al uw verzendbare opdrachten:

ProcessPodcast::withChain([
    new OptimizePodcast,
    new ReleasePodcast
])->dispatch();

Dus in je voorbeeld hierboven

$mailJobs = Subscriptions::all()
    ->map(function($subscription) {
        return new SendMailJob($subscription);
    });

Job::withChain($mailJobs)->dispatch()

Zou het verwachte resultaat moeten geven!

Bijwerken

Als u geen initiële taak wilt gebruiken om van te ketenen (zoals getoond in het documentatievoorbeeld hierboven), zou u een lege Job moeten kunnen maken klasse met use Dispatchable; . Dan kun je mijn voorbeeld hierboven gebruiken



  1. Hoe gebruik je een variabele als veldnaam in mongodb-native findOne()?

  2. tijdreeksen opslaan in redis

  3. Hoe 2 mongodb-collecties vergelijken?

  4. Redigo ScanStruct-fout met time.Time