CronJob sistemi hakkında / Laravel 5.x Yardım / Laravel Türkiye Forumları
» CronJob sistemi hakkında
#1 02.06.2019 21:12:49
CronJob sistemi hakkında
Yazdığım bir script te her kullanıcı için cronjob çalışması gerekiyor. Cronjob çalışırken bir hata ile karşılaşırsa die() ile işlemi sonlandırıyorum.
Tek bir cronjob çalıştırıp yapılacak işlemi olan hesapların cronjoblarını foreach e alıp sırayla çalıştırdığımda bir hesapta bile error oluşursa işlem sonlanıyor doğal olarak.
Panel üzerinden her hesaba cronjob eklemek amelelik olacaktır. Bunu php kısmında nasıl yapabilirim ?
Cronjob sayfası çalışınca cronjob.php?id=UserId şeklinde oluşturacağım yapıya get veya post atıp gelen sonuca bakmadan işime devam etsem diye düşündüm fakat içime sinmedi nedense.
#2 02.06.2019 21:58:52
Yanıt: CronJob sistemi hakkında
#3 02.06.2019 22:19:13
Bir tane cronjob olur, içerisinde birden fazla işlem yaptırırsınız. İçerisinde yaptıracağınız işlemler uzun süren ya da bağlantılı işlemler ise ayrıca kuyruk kullanırsınız.
Yazdığınız scriptte her kullanıcı için cronjob çalışması gerekmiyor; her kullanıcı için bir işlem yapılması gerekiyor.
#4 02.06.2019 22:46:27
Queue benimde aklıma geldi fakat , maalesef laravel de queue nasıl kullanırım tam olarak bilmiyorum. Ne işe yaradığını biliyorum fakat nasıl kullanacağım konusunda bilgin yok. İngilizce kaynaklarda karışık işlemleri öğrenemiyorum. Türkçe queue makalelerinde de örnek yok ve kafa karıştırıcı şekilde anlatmışlar.
Son düzenleyen coder2 (02.06.2019 22:47:13)
#5 03.06.2019 18:28:35
Redis ile beceremedim yapmayı fakat mysql üzerinde yapabildim. Takılan ve bu konuyu gören arkadaşlar olursa diye alt tarafa yaptıklarımı yazıyorum. Dökümantasyonda yazanları tek tek uyguladım. Arka plandaki çalışma mantığını henüz tam anlamış değilim fakat
default' => env('QUEUE_CONNECTION', 'database'),
Aşağıdaki şekilde queue tablolarını oluşturup migrate ettim.
İlgili job oluşturdum
php artisan make:job SendMessageUser
Oluşturulan job içinde handle() methodunda gerçekleşecek mesaj atma işlemlerini yazdım.
İlgili controller içinde job u kuyruğa ekledim.
$sendMessage = new SendMessageUser();
artisan komutunu çalıştırınca sorunsuz şekilde çalışıyor.
Job içinde --tries=3 ile iş başına maximum çalıştırmaya deneme sayısı ve --sleep=120 ile timeout süresi tanımlanabiliyormuş.
Daha farklı özellikleri de var. supervisor ekleme olayını sunucu da denedikten sonra buraya yazarım tekrar.
Son olarak queue:work çalıştıktan sonra kodlarda değişiklik yapınca eski haline göre işlem yapıyor. php artisan queue:restart komutunu verince sorun kalmıyor. Supervisor ile ilgili başlık altında autorestart=true yazıyor. Sanırım bu otomatik olarak restart etmeye yarıyor. En azından oyle umuyorum
Son düzenleyen coder2 (03.06.2019 18:38:33)