Arkadaşlar merhaba.
Laravelde yeniyim. Bir uygulama geliştiriyorum.
Bir tane uzun sürebilecek bir işlem var. O sebeple bunun asenkron yapılması lazım.
Laravel queue ile yapmayı denedim ama çalışmıyordu. 2 gündür uğraşıyorum. Meğer her queue eklendikten sonra manuel olarak "php artisan queue:work" ile çalıştırılması lazımmış.
Bunun çözümü yok mu? Kullanıcı bir işlem başlattığı zaman asenkron işlem yapılmalı ve eventlar aracılığı ile güncel durum websocket üzerinden yayınlanmalı. Ben de react tarafında yayını dinleyip yazdıracağım.
Yapay zekaya soruyorum fakat çok saçma şeyler yaptırıyor akıl karı değil.
Eğer böyle bir şey mümkün değilse uğraşmayayım boşuna.
Laravel Asenkron İşlemler
9
●248
- 27-04-2025, 00:14:06
- 27-04-2025, 00:19:41Cronjob'a görev tanımlarsanız o komutun aralıklarla çalışmasını sağlayabilirsiniz bu şekilde çözülür bu durum başka türlü zaten yolu yok.sacilannurlar adlı üyeden alıntı: mesajı görüntüle
- 27-04-2025, 00:22:34Çok doğru söylediniz hocam. Biraz motoru yaktık. Sırf bu asenkron-websocket konularından ötürü laravel yerine nodejs öneriyorlardı ama aşarım dedim o problemleri. Gerçekten de kurulumu biraz zahmetliymiş. Pek kaynak da yok. Yapay zeka da yardımcı olamıyor. Teşekkür ederim.Srylius adlı üyeden alıntı: mesajı görüntüle
- 27-04-2025, 00:30:37Supervisor kullanabilirsiniz. Özellikle Horizon ile beraber hem işinizi kolaylaştırır hem de rahat monitorize edebilirsiniz.sacilannurlar adlı üyeden alıntı: mesajı görüntüle
- 27-04-2025, 00:42:01Normaldir asenkron işlemlerde aslında doğru söylüyorlar NodeJS kullanmanız daha sağlıklı.sacilannurlar adlı üyeden alıntı: mesajı görüntüle
- 27-04-2025, 21:27:49Çok şükür çözdüm problemi hocam. Basit bir şeymiş ama yapıyı bilmediğimizden işte...memu adlı üyeden alıntı: mesajı görüntüle
QUEUE_CONNECTION = database şu anda. Database olduğu için sürekli bunu açık tutacak "php artisan queue:work" komutu çalışması lazım.
Localde çalışırken bu sürekli kapanıyor ve manuel olarak çalıştırılması gerekiyor.
Sizin dediğiniz supervisor vb. eklentiler ise bunu sunucu ortamında daha otomatikleştiriyor ve monitöre döküyor anladığım kadarı ile.
Geliştirme aşamasında .env de sync olarak da ayarlanabilir queue conection belki ama gerek yok. asenkron yapıyı bozuyor.
Bu arkadaş çalışmadığı zaman ne eventlar yayınlanıyor ne de websocket sağlam çalışıyor.
Aynı problemi ileride yaşayan olursa diye detaylı yazmak istedim. - 27-04-2025, 21:35:19Localdeki çalışma ortamınız ile production ortamınızı aynı tutarsanız ileride sorun yaşama ihtimaliniz azalır.sacilannurlar adlı üyeden alıntı: mesajı görüntüle
Normaldephp artisan queue:work
komutunun devamlı çalışması lazım ama bazen çeşitli nedenlerle bu komutun çalışması durabilir. Mesela server restart etmeniz gerektiğinde bu komutu tekrar çalıştırmanız gerekir. Supervisor bir process manager yazılımılır ve onun sayesinde bu ve benzer komutların devamlı çalışmasını garanti altına almış olursunuz. Laravel dokumanında detayları bulabilirsiniz: https://laravel.com/docs/12.x/queues...-configuration
Horizion ile ise queue'ları kolayca yönetebilir, önceliklerini ayarlabilir ve çalışma prensiplerini belirleyebilirsiniz. Detaylar: https://laravel.com/docs/12.x/horizon - 27-04-2025, 21:38:19Hocam bu supervisor ve horizon 3. parti olarak mı çalışıyor? Çünkü şu anda bir script üzerinde çalışıyorum. Son kullanıcı bunları kullanmak istemeyecektir. O sebeple websockette de reverb kullandım mesela. Supervisor ola queue work, revert:start vb. komutları tanımlasam yeterli olacaktır diye düşünüyorum. Horizon da ileride gerekebilir öncelikleri sıralamak için. Ama 3. parti mi? workos kullanmaya da çekindim bu sebepten.memu adlı üyeden alıntı: mesajı görüntüle
- 27-04-2025, 21:52:37Horizon, Laravel ekibi tarafında geliştirilen bir yazılım. Composer ile kolayca kurabilirsiniz. "composer require laravel/horizon" Ancak bunun için queue manager olarak Redis kullanmalısınız.sacilannurlar adlı üyeden alıntı: mesajı görüntüle
Supervisor ise ayrı bir yazılım. Kurulum için serverınıızın işletim sistemine göre kurumları kendi sitesinden detaylı olarak öğrenebilirsiniz: https://supervisord.org/installing.html
Mesela ubuntu için sudo apt-get install supervisor ile kurabilirsiniz.
Production için supervisor gibi bir process monitor yazılımı mutlaka gerekir. Çünkü queue:work işleminin devamlı çalışması gerekir ve bunun durmasına sebep olan pek çok neden vardır. Supervisor'ın laravel ayarları da yine paylaştığım linkte mevcut. https://laravel.com/docs/12.x/queues...-configuration