Laravel 10.31 Released
Last updated on by Paul Redmond
This week, the Laravel team released v10.31, the ability to place batches within job chains. You can run jobs sequentially, then parallelize a batch of jobs, and continue with the chain once that batch has been completed.
Allow placing a batch on a chain
Sebastien Armand added the ability to run batches of jobs within a job chain
This is a use case we encounter in a couple places at Square where we have a serial process of jobs that need to be handled and one or more of the steps either should be worked on in parallel or are of unknown length when initially triggering the workflow and will create additional jobs, but we need to know when this is finished to ensure we keep the chain going.
Here's an example from the updated Chains & Batches documentation, where you could first flush the cache, release a batch of podcasts, and then batch notifications of those podcasts:
use App\Jobs\FlushPodcastCache;use App\Jobs\ReleasePodcast;use App\Jobs\SendPodcastReleaseNotification;use Illuminate\Support\Facades\Bus;Bus::chain([new FlushPodcastCache,Bus::batch([new ReleasePodcast(1),new ReleasePodcast(2),]),Bus::batch([new SendPodcastReleaseNotification(1),new SendPodcastReleaseNotification(2),]),])->dispatch();
Sleep::until() handles string timestamps
James Hulse contributed the ability to pass a timestamp string to
Sleep::until(), which will still ensure the value is numeric:
Added support for
Whilst most User Agents set Purpose: prefetch in prefetch requests, Firefox uses Sec-Purpose: prefetch in the latest version, as described in the above MDN article. This means that calling the ->prefetch() method on the request will return false for requests sent via the Firefox browser, regardless of prefetch status.
- [10.x] Allow
Sleep::until()to be passed a timestamp as a string by @jameshulse in https://github.com/laravel/framework/pull/48883
- [10.x] Fix whereHasMorph() with nullable morphs by @MarkKremer in https://github.com/laravel/framework/pull/48903
- [10.x] Handle
class_parentsreturning false in
class_uses_recursiveby @RoflCopter24 in https://github.com/laravel/framework/pull/48902
- [10.x] Enable default retrieval of all fragments in
fragmentsIf()methods by @tabuna in https://github.com/laravel/framework/pull/48894
- [10.x] Allow placing a batch on a chain by @khepin in https://github.com/laravel/framework/pull/48633
- [10.x] Dispatch 'connection failed' event in async http client request by @gdebrauwer in https://github.com/laravel/framework/pull/48900
- authenticate method refactored to use null coalescing operator by @miladev95 in https://github.com/laravel/framework/pull/48917
- [10.x] Add support for Sec-Purpose header by @nanos in https://github.com/laravel/framework/pull/48925
- [10.x] Allow setting retain_visibility config option on Flysystem filesystems by @jnoordsij in https://github.com/laravel/framework/pull/48935
- [10.x] Escape forward slashes when exploding wildcard rules by @matt-farrugia in https://github.com/laravel/framework/pull/48936
Edit 11/09/2023: The
Bus::chain() snippet originally contained an incorrect
->then() chain. This article has corrected the error and it was also fixed upstream in the official docs.