Спрощене створення пакетних завдань за допомогою вдосконалених команд Artisan у Laravel

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 06 серпня, 2025
Ларавел ввів нову команду генерації завдань, яка спрощує налаштування пакетної обробки завдяки інтегрованим параметрам. Як це може заощадити ваш час та полегшити роботу? Читайте далі, щоб дізнатися про переваги автоматизованого створення пакетних завдань!

Команда генерації завдань у 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
        ]);
    }
}

Автоматизоване налаштування гарантує наявність критичних перевірок скасування пакетів з моменту ініціалізації проєкту, запобігаючи виникненню непослідовних станів даних та неповним сценаріям обробки, які можуть виникнути через недогляд у ручній реалізації.