sql >> Databáze >  >> NoSQL >> Redis

Laravel - Spouštění úloh v sekvenci

To, co hledáte, jak uvádíte ve své otázce, je řetězení práce.

Z dokumentů Laravel

Zřetězení úloh vám umožňuje zadat seznam úloh ve frontě, které by se měly spouštět postupně. Pokud jedna úloha v posloupnosti selže, zbývající úlohy nebudou spuštěny. Chcete-li provést řetězec úloh ve frontě, můžete použít metodu withChain pro kteroukoli z vašich úloh, které lze odeslat:

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

Takže ve vašem příkladu výše

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

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

Mělo by přinést očekávaný výsledek!

Aktualizovat

Pokud nechcete použít počáteční úlohu k řetězení (jak je znázorněno v příkladu dokumentace výše), měli byste být schopni vytvořit prázdnou Job třída, která má use Dispatchable; . Pak můžete použít můj příklad výše



  1. Odstranění konkrétních položek z pole pomocí MongoDB

  2. Jak mohu používat MongoDB s Flask?

  3. Jaký je rozdíl mezi metodou HSET a HMSET v databázi redis

  4. Nelze se ověřit do mongo, ověření se nezdařilo