Chunking Jobs
Setup
composer require sammyjo20/laravel-chunkable-jobsConfiguring Jobs
<?php
use Sammyjo20\ChunkableJobs\Chunk;
use Sammyjo20\LaravelHaystack\ChunkableHaystackJob;
class GetPageOfPokemon extends ChunkableHaystackJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public function defineChunk(): ?Chunk
{
$response = Http::asJson()->get('https://pokeapi.co/api/v2/pokemon');
$count = $response->json('count'); // 1154
return new Chunk(totalItems: $count, chunkSize: 1, startingPosition: 1);
}
protected function handleChunk(Chunk $chunk): void
{
$response = Http::asJson()->get(sprintf('https://pokeapi.co/api/v2/pokemon?limit=%s&offset=%s', $chunk->limit, $chunk->offset));
$data = $response->json();
// Store data of response
}
}Documentation
Last updated