Laravel - Jobs & Queue

Makale İçerik Listesi

Setup

  1. Queue verisinin veritabanında tutulacağını belirtmek için .env dosyasında QUEUE_DRIVER=database olarak değiştir.
  2. Queue tablosunu veritabanında tutmak için Queue migration'ını oluştur
    php artisan queue:table
  3. Queue'ya alacağın yeni bir iş(Job) oluştur. php artisan make:job CompanyCloneJob

 

Yeni Bir İş(Job) Oluştur

  1. <?php
    
    namespace App\Jobs\Company;
    
    use App\Company;
    use Illuminate\Bus\Queueable;
    use Illuminate\Contracts\Queue\ShouldQueue;
    use Illuminate\Foundation\Bus\Dispatchable;
    use Illuminate\Queue\InteractsWithQueue;
    use Illuminate\Queue\SerializesModels;
    use Illuminate\Support\Facades\DB;
    
    class CompanyCloneJob implements ShouldQueue
    {
        use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
        
        private Company $parent;
        private Company $child;
        /**
         * Create a new job instance.
         */
        public function __construct(Company $parent, Company $child)
        {
            //
            $this->parent = $parent;
            $this->child = $child;
        }
    
        /**
         * Execute the job.
         */
        public function handle(): void
        {
            $this->cloneCompany();
            $this->cloneImages();
            sleep(10);
            var_dump($this->parent->alias . ' - ' . $this->child->alias);
        }
    
        private function cloneCompany()
        {
        }
    
        private function cloneImages()
        {
        }
    
    
    }
    

Job Listen

  1. php artisan queue:listen
  2. Controller'da Dispatch fonksiyonu ile çağır 
    CompanyCloneJob::dispatch($parentCompany, $childCompany);

Kaynakça

  1. Laravel Docs Queue:Creating Jobs - link
  2. Laracasts - Queue it up - link