🎯 Yapılacaklar
1. Artisan Console Command Oluşturma Yüksek Öncelik
Console Command
(Laravel'de terminal komutları için kullanılan sınıf)
oluşturacağız. Bu komut cron job tarafından her saat başı çalıştırılacak.
Dosya: app/Console/Commands/GenerateHourlyBlog.php
Görevler:
- Command imzası tanımla (generate:hourly-blog)
- Draft sayısını kontrol et
- Rastgele draft seçim mantığı
- Queue job tetikleme
- Log kayıt sistemi
2. Draft Kontrol Mantığı Yüksek Öncelik
Sistemde kaç draft olduğunu kontrol edip, akıllı karar verme mekanizması.
Senaryolar:
- Durum 1: Draft sayısı > 1 → Sadece blog üret
- Durum 2: Draft sayısı = 1 (son) → Blog üret + 100 yeni draft üret
- Durum 3: Draft sayısı = 0 → Önce 100 draft üret, bekle, sonra blog üret
Beklenen Sonuç: Sistem asla draft'sız kalmayacak, sürekli hazır içerik havuzu olacak.
3. Kernel.php Schedule Ayarı Yüksek Öncelik
Task Scheduling
(Laravel'in built-in cron sistemi)
kullanarak her saat başı komutumuzu otomatik çalıştıracağız.
Dosya: app/Console/Kernel.php
Yapılacak:
- Schedule metoduna komut ekle
- Hourly (her saat başı) olarak ayarla
- Overlap (çakışma) önleme ekle
- Timeout ayarı (maximum 10 dakika)
- Email notification (hata durumunda)
4. Rastgele Draft Seçimi Orta Öncelik
Her seferinde farklı bir draft kullanılacak. Aynı konular tekrar etmeyecek.
Strateji:
- Kullanılmamış draft'ları filtrele (is_generated = false)
- Rastgele sıralama (inRandomOrder)
- İlk draft'ı seç
- Blog üretimi sonrası draft'ı "kullanıldı" olarak işaretle
5. Otomatik Draft Yenileme Sistemi Yüksek Öncelik
Son draft kullanıldığında otomatik olarak 100 yeni draft üretilecek.
Mantık:
- Draft sayısı 1'e düştüğünde tetiklenecek
- GenerateDraftsJob kuyruğa eklenecek (draftCount: 100)
- Paralel çalışacak (blog üretimi devam ederken draft'lar oluşacak)
- Queue bağımsız olduğu için birbirini engellemeyecek
Beklenen Sonuç: Sistem sürekli 50-100 arası draft havuzunda çalışacak.
6. Log & Monitoring Sistemi Orta Öncelik
Her işlem kayıt altına alınacak, sorun takibi kolaylaşacak.
Loglanacak Bilgiler:
- Cron çalışma zamanı (timestamp)
- Draft sayısı (öncesi/sonrası)
- Seçilen draft ID'si ve başlığı
- Queue job ID'leri
- Başarı/hata durumu
- İşlem süresi
Log dosyası: storage/logs/blog-cron.log
7. Test & Manuel Tetikleme Orta Öncelik
Sistemi test etmek için manuel komut ekleme.
Test Senaryoları:
- Manuel tetikleme komutu çalıştır
- Draft sayısını manuel değiştir ve senaryoları test et
- Queue job'ların düzgün çalıştığını kontrol et
- Log kayıtlarını incele
- Cron'un çalışıp çalışmadığını doğrula
Test komutu: php artisan generate:hourly-blog
8. Cron Sunucu Ayarı Düşük Öncelik
Plesk/cPanel üzerinde Laravel scheduler'ı aktif etme.
Yapılacak:
- Plesk Scheduled Tasks bölümüne git
- Yeni task ekle: Her dakika çalışacak
- Komut: cd /var/www/vhosts/tuufi.com/httpdocs && php artisan schedule:run >> /dev/null 2>&1
- Laravel kendi içinde hourly kontrolü yapacak