Back
Syntax
Study
Editor
Mode:
HTML
CSS
JavaScript
PHP
Reset
Run »
HTML / CSS / JS
<?php // Job chaining use Illuminate\Support\Facades\Bus; Bus::chain([ new \App\Jobs\OptimizeImage($upload), new \App\Jobs\GenerateThumbnails($upload), new \App\Jobs\NotifyUser($upload->user), ])->catch(function (\Throwable $e) { \Log::error('Chain failed: ' . $e->getMessage()); })->dispatch(); // Job batching $batch = Bus::batch([ new \App\Jobs\ImportRow($rows->slice(0, 100)), new \App\Jobs\ImportRow($rows->slice(100, 100)), new \App\Jobs\ImportRow($rows->slice(200)), ])->then(function (\Illuminate\Bus\Batch $batch) { \Log::info('All import jobs completed.'); })->catch(function (\Illuminate\Bus\Batch $batch, \Throwable $e) { \Log::error('Batch failed: ' . $e->getMessage()); })->finally(function (\Illuminate\Bus\Batch $batch) { // Runs regardless of success/failure })->dispatch(); // Rate-limited job middleware use Illuminate\Queue\Middleware\RateLimited; class CallExternalApi implements \Illuminate\Contracts\Queue\ShouldQueue { public function middleware(): array { return [new RateLimited('external-api')]; } } // Register the limiter in AppServiceProvider::boot() // \RateLimiter::for('external-api', fn($job) => \Illuminate\Cache\RateLimiting\Limit::perMinute(20));
Result
Open