Команда генерації завдань у Laravel тепер спрощує налаштування пакетної обробки за допомогою інтегрованої опції прапорця. Це покращення усуває потребу в ручному налаштуванні, забезпечуючи, щоб розробники включали необхідні шаблони обробки пакетів з самого початку.
Традиційне налаштування пакетних завдань вимагало кількох ручних кроків після створення початкового завдання:
php artisan make:job ProcessDocument
use Illuminate\Bus\Batchable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Queue\Queueable;
class ProcessDocument implements ShouldQueue
{
use Batchable, Queueable;
public function handle(): void
{
if ($this->batch()->cancelled()) {
return;
}
// Логіка обробки тут
}
}
Покращена команда автоматично генерує повністю готові до пакетної обробки завдання:
php artisan make:job ProcessDocument --batched
Ця одна команда створює повністю налаштовані класи з необхідними рисами та обробкою скасування, інтегрованою у весь процес реалізації.
Створення комплексної системи обробки документів демонструє практичні переваги автоматизованого скелетного коду для пакетних завдань:
namespace App\Jobs;
use App\Models\Document;
use Illuminate\Bus\Batchable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Queue\Queueable;
class ProcessDocument implements ShouldQueue
{
use Batchable, Queueable;
public function __construct(
public Document $document
) {}
public function handle(): void
{
if ($this->batch()->cancelled()) {
return;
}
$this->extractText();
$this->generateThumbnail();
$this->performOcr();
$this->document->markAsProcessed();
}
private function extractText(): void
{
//
}
private function generateThumbnail(): void
{
//
}
private function performOcr(): void
{
//
}
}
class DocumentController
{
public function processBatch(Collection $documents)
{
$jobs = $documents->map(
fn($document) => new ProcessDocument($document)
);
$batch = Bus::batch($jobs)
->name("Document Processing Batch")
->onQueue('document-processing')
->dispatch();
return response()->json([
'batch_id' => $batch->id,
'job_count' => $batch->totalJobs
]);
}
}
Автоматизоване налаштування гарантує наявність критичних перевірок скасування пакетів з моменту ініціалізації проєкту, запобігаючи виникненню непослідовних станів даних та неповним сценаріям обробки, які можуть виникнути через недогляд у ручній реалізації.