PHP code example of sammyjo20 / laravel-chunkable-jobs
1. Go to this page and download the library: Download sammyjo20/laravel-chunkable-jobs library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
sammyjo20 / laravel-chunkable-jobs example snippets
use Sammyjo20\ChunkableJobs\Chunk;
use Sammyjo20\ChunkableJobs\ChunkableJob;
class GetPageOfPokemon extends ChunkableJob 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
}
}
use Sammyjo20\ChunkableJobs\Chunk;
use Sammyjo20\ChunkableJobs\ChunkableJob;
class GetPageOfPokemon extends ChunkableJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public function defineChunk(): ?Chunk
{
//
}
protected function handleChunk(Chunk $chunk): void
{
//
}
}
use Sammyjo20\ChunkableJobs\Chunk;
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);
}
use Sammyjo20\ChunkableJobs\Chunk;
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
}
GetPageOfPokemon::dispatch();
use Sammyjo20\ChunkableJobs\BulkChunkDispatcher;
// Will dispatch all jobs at once 🚀
GetPageOfPokemon::dispatchAllChunks();
// or
BulkChunkDispatcher::dispatch(new GetPageOfPokemon);
use Sammyjo20\ChunkableJobs\Chunk;
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));
// Stop chunking early...
if ($response->failed()) {
$this->stopChunking();
}
}
use Sammyjo20\ChunkableJobs\Chunk;
$job = new GetPageOfPokemon;
$job->setChunk(new Chunk(totalItems: 100, chunkSize: 10, startingPosition: 5));
dispatch($job);
use Sammyjo20\ChunkableJobs\ChunkRange;
$chunkRange = ChunkRange::create(30, 10);
foreach($chunkRange as $chunk) {
// Handle $chunks
}
use Sammyjo20\ChunkableJobs\Chunk;
use Sammyjo20\ChunkableJobs\ChunkableJob;
use Sammyjo20\ChunkableJobs\UnknownSizeChunk;
class GetPageOfPokemon extends ChunkableJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public function defineChunk(): ?Chunk
{
return UnknownSizeChunk(chunkSize: 100);
}
protected function handleChunk(Chunk $chunk): void
{
// Keep processing
// When ready to stop:
if ($stop === true) {
$this->stopChunking();
}
}
}
protected function handleChunk(Chunk $chunk): void
{
$chunk = new Chunk(100, 10)
$chunk = $chunk->move(5);
$this->setNextChunk($chunk);
}
use Sammyjo20\ChunkableJobs\Chunk;
use Sammyjo20\ChunkableJobs\ChunkableJob;
use Illuminate\Support\Facades\Log;
class GetPageOfPokemon extends ChunkableJob 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
}
protected function setUp(): void
{
Log::info('Starting the retrieval process...');
}
protected function tearDown(): void
{
Log::info('Finished the retrieval process!');
}
}
use Sammyjo20\ChunkableJobs\Chunk;
use Sammyjo20\ChunkableJobs\ChunkableJob;
use Illuminate\Support\Facades\Log;
class GetPageOfPokemon extends ChunkableJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
protected string $stripeSecret;
protected array $ignoredProperties = ['stripeSecret'];
}
class GetPageOfPokemon extends ChunkableJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
private ?string $privateProperty = null;
public function __construct()
{
$this->privateProperty = 'Shh!';
}
// ... Other methods
protected function modifyClone(ChunkableJob $job): static
{
unset($job->privateProperty);
return $job;
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.