• 27-04-2025, 00:14:06
    #1
    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.
  • 27-04-2025, 00:19:41
    #2
    Teknoloji ve Yazılım
    sacilannurlar adlı üyeden alıntı: mesajı görüntüle
    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.
    Cronjob'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.
  • 27-04-2025, 00:22:34
    #3
    Srylius adlı üyeden alıntı: mesajı görüntüle
    Cronjob'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.
    Ç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.
  • 27-04-2025, 00:30:37
    #4
    Kurumsal Üye
    sacilannurlar adlı üyeden alıntı: mesajı görüntüle
    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.
    Supervisor kullanabilirsiniz. Özellikle Horizon ile beraber hem işinizi kolaylaştırır hem de rahat monitorize edebilirsiniz.
  • 27-04-2025, 00:42:01
    #5
    Teknoloji ve Yazılım
    sacilannurlar adlı üyeden alıntı: mesajı görüntüle
    Ç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.
    Normaldir asenkron işlemlerde aslında doğru söylüyorlar NodeJS kullanmanız daha sağlıklı.
  • 27-04-2025, 21:27:49
    #6
    memu adlı üyeden alıntı: mesajı görüntüle
    Supervisor kullanabilirsiniz. Özellikle Horizon ile beraber hem işinizi kolaylaştırır hem de rahat monitorize edebilirsiniz.
    Çok şükür çözdüm problemi hocam. Basit bir şeymiş ama yapıyı bilmediğimizden işte...
    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:19
    #7
    Kurumsal Üye
    sacilannurlar adlı üyeden alıntı: mesajı görüntüle
    Çok şükür çözdüm problemi hocam. Basit bir şeymiş ama yapıyı bilmediğimizden işte...
    Queue worker 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 worker belki ama gerek yok.
    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.
    Localdeki çalışma ortamınız ile production ortamınızı aynı tutarsanız ileride sorun yaşama ihtimaliniz azalır.

    Normalde
    php 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:19
    #8
    memu adlı üyeden alıntı: mesajı görüntüle
    Localdeki çalışma ortamınız ile production ortamınızı aynı tutarsanız ileride sorun yaşama ihtimaliniz azalır.

    Normalde
    php 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
    Hocam 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.
  • 27-04-2025, 21:52:37
    #9
    Kurumsal Üye
    sacilannurlar adlı üyeden alıntı: mesajı görüntüle
    Hocam 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.
    Horizon, 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.

    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