Giriş yapmadınız.

#1 02.06.2019 21:12:49

coder2
Üye
Yer: Antalya
Kayıtlı: 09.12.2018
Mesajlar: 42

CronJob sistemi hakkında

Merhaba arkadaşlar,

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.

Çevrimdışı

#2 02.06.2019 21:58:52

deathisonitsway
Üye
Kayıtlı: 01.02.2016
Mesajlar: 463

Yanıt: CronJob sistemi hakkında

neden laravelin hizmetlerini kullanmıyorsunuz?

https://laravel.com/docs/5.8/queues


Laravel does not save you. Php knowledge only save you. Do not become a Laravel programmer, just the opposite,become php developer.

Çevrimdışı

#3 02.06.2019 22:19:13

mgsmus
Moderatör
Yer: Mersin
Kayıtlı: 17.08.2013
Mesajlar: 1,675
Website

Yanıt: CronJob sistemi hakkında

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.

Çevrimdışı

#4 02.06.2019 22:46:27

coder2
Üye
Yer: Antalya
Kayıtlı: 09.12.2018
Mesajlar: 42

Yanıt: CronJob sistemi hakkında

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)

Çevrimdışı

#5 03.06.2019 18:28:35

coder2
Üye
Yer: Antalya
Kayıtlı: 09.12.2018
Mesajlar: 42

Yanıt: CronJob sistemi hakkında

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

config/queue.php  içinde

default' => env('QUEUE_CONNECTION', 'database'),

  olarak güncelledim.

Aşağıdaki şekilde queue tablolarını oluşturup migrate ettim.

php artisan queue:table
php artisan queue:failed-table

İ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();
$this->dispatch($sendMessage );
php artisan queue:work

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 smile

Son düzenleyen coder2 (03.06.2019 18:38:33)

Çevrimdışı

Forum alt kısmı