Laravel İşleri, arka planda eşzamansız olarak yürütülen görevlerdir. Uygulamanızın kullanıcı deneyimini yavaşlatabilecek zaman yoğun veya G/Ç bağlantılı işlemleri gerçekleştirmek için kullanılırlar. İşler, ana başvuru sürecinden bağımsız olarak yürütülecek şekilde tasarlandığından uygulamanızın hızlı yanıt vermesini ve verimli kalmasını sağlar.
Temel Kavramlar
1. İşler: İşler, eşzamansız olarak yürütülen görevlerdir. E-posta göndermek, büyük veri kümelerini işlemek veya diğer zaman alan işlemleri gerçekleştirmek gibi çeşitli amaçlar için kullanılabilirler.
2. Kuyruklar: Kuyruklar işleri depolamak ve yönetmek için kullanılır. Laravel, Redis, Beanstalk, Amazon SQS ve ilişkisel veritabanları gibi çeşitli kuyruk arka uçlarını destekler. Her iş bir kuyrukta saklanır ve sırayla işlenir.
3. İşçiler: Çalışanlar, kuyruktaki işleri işlemek için arka planda çalışan ayrı işlemlerdir. 'queue:work' komutunu kullanarak başlatılabilirler. Çalışanlar işlerin verimli bir şekilde yürütülmesini sağlar ve ana başvuru sürecini engellemez.
Faydalar
1. Gelişmiş Kullanıcı Deneyimi (UX): Görevleri farklı bir süreçte çalıştırılan işlere ayırarak, ana uygulamayı duyarlı ve verimli tutarak kullanıcı deneyimini iyileştirebilirsiniz.
2. Ölçeklenebilirlik: İşler paralel olarak işlenebilir ve bu sayede uygulamanızın daha verimli şekilde ölçeklendirilmesi sağlanır.
3. Esneklik: Laravel'in iş sistemi esnektir ve farklı kuyruk arka uçlarını ve teknolojilerini kullanacak şekilde yapılandırılabilir.
Yapılandırma ve Kullanım
1. İş Sınıfları Oluşturma: İşler genellikle "app/Jobs" dizininde saklanır. 'make:job' Artisan komutunu kullanarak yeni bir iş oluşturabilirsiniz.
2. İşleri Gönderme: İşler "gönderme" yöntemi kullanılarak gönderilebilir. Bu yöntem, işi kuyruğa iter ve eşzamansız olarak yürütülmesine olanak tanır.
3. Kuyruk Çalışanını Çalıştırma: Kuyruk çalışanı "queue:work" komutu kullanılarak başlatılabilir. Bu komut kuyruktaki işleri işleyen alt işlemi çalıştırır.
4. İş Olayları: Laravel, işler için olay kancaları sağlayarak, bir iş işlenmeden önce veya sonra ek eylemler gerçekleştirmenize olanak tanır. Bu olaylar günlüğe kaydetme, istatistik veya başka amaçlar için kullanılabilir.
5. İş Zincirleme: Birincil iş başarıyla tamamlandıktan sonra işler bir dizi işi yürütmek için birbirine zincirlenebilir. Bu özellik, bağımlı işlerin yalnızca birincil iş başarılı olduğunda yürütülmesini sağlar.
6. İş Gruplandırma: Laravel, bir grup işi yürütmenize ve toplu iş tamamlandığında eylemler gerçekleştirmenize olanak tanıyan iş gruplandırmayı destekler.
Çözüm
Laravel Jobs, uygulamanızdaki eşzamansız görevleri yerine getirmeniz için sağlam ve esnek bir yol sağlar. İşleri ve kuyrukları kullanarak, kodunuzu düzenli ve bakımı kolay tutarken kullanıcı deneyimini, ölçeklenebilirliğini ve uygulamanızın verimliliğini artırabilirsiniz[1][2][3].
Alıntılar:[1] https://www.directimpactsolutions.com/en/laravel-jobs-queue-worker/
[2] https://laravel.com/docs/5.8/queues
[3] https://laravel.com/docs/11.x/queues
[4] https://laravel.com/docs/5.1/queues
[5] https://stackoverflow.com/questions/59698201/laravel-understanding-job-concept