Ana Sorun: Laravel Scheduler'da generate:tenant-blogs komutu tanımlı AMA php artisan schedule:list çıktısında GÖRÜNMÜYOR!
Sonuç: Cron her dakika çalışıyor, ama blog generation komutu schedule listesinde yok, dolayısıyla ASLA çalışmıyor!
Laravel Scheduler'da kayıtlı komutlar:
| Komut | Zamanlama | Durum |
|---|---|---|
| payment:update-paytr-rates | Daily (09:00, 18:00) | Çalışıyor |
| tenants:run currency:update-rates | Daily (10:00, 17:00) | Çalışıyor |
| tenant:track-resources | Every 5 minutes | Çalışıyor |
| generate:tenant-blogs | Hourly (her saat başı) | KAYITLI DEĞİL! |
Sorun: Kernel.php'de komut tanımlı ama schedule listesinde görünmüyor!
// app/Console/Kernel.php
$schedule->command('generate:tenant-blogs')
->hourly() // Her saat başı
->withoutOverlapping(10)
->runInBackground()
->appendOutputTo(storage_path('logs/blog-cron.log'))
->onSuccess(function () {
\Log::channel('daily')->info('✅ Blog Cron Success');
})
->onFailure(function () {
\Log::channel('daily')->error('❌ Blog Cron Failed');
});
Tespit: Komut tanımı DOĞRU, ama Laravel bu komutu schedule listesine eklemiyor!
Test 1: Komut manuel çalıştırma
$ php artisan generate:tenant-blogs --test ✅ BAŞARILI! Komut çalışıyor ve mantık doğru. - Saat: 05 (Aktif saatler: 0, 3, 6, 9, 12, 15, 18, 21) - Tenant 1: Skipped (saat aktif değil) - Tenant 2: Skipped (saat aktif değil) - Tenant 3: Skipped (AI disabled)
Test 2: Log kontrolü (21:00 testleri)
storage/logs/blog-cron.log: - 21:05: Tenant 1 draft #5 seçildi → Blog job dispatched ✅ - 21:05: Tenant 2 draft #332 seçildi → Blog job dispatched ✅ - 21:10: Tenant 1 draft #2 seçildi → Blog job dispatched ✅ - 21:10: Tenant 2 draft #333 seçildi → Blog job dispatched ✅
Sonuç: Komut MANUEL çalıştırıldığında her şey mükemmel çalışıyor!
1. Command Registration Eksik
Komut Kernel.php'de tanımlı ama commands() metodunda register edilmemiş olabilir.
2. Service Provider Sıralaması
BlogServiceProvider, Kernel schedule'dan önce yüklenmiyor olabilir.
3. Cache Sorunu
Laravel route/config cache'i eski schedule bilgilerini tutabilir.
4. Command Class İsim Çakışması
Signature doğru ama class namespace'i hatalı olabilir.
Laravel'in tüm cache'lerini temizleyerek schedule listesini yenile:
php artisan cache:clear php artisan config:clear php artisan route:clear php artisan schedule:clear-cache
Kernel.php'de commands() metodunu kontrol et:
protected function commands(): void
{
$this->load(__DIR__.'/Commands');
require base_path('routes/console.php');
}
// ✅ Bu zaten mevcut, Commands klasörü yükleniyor
Cache temizlendikten sonra schedule listesini tekrar kontrol et:
php artisan schedule:list | grep generate // Beklenen çıktı: // 0 * * * * php artisan generate:tenant-blogs Next Due: X dakika sonra
Eğer schedule hala çalışmazsa, geçici olarak crontab'a direkt ekle:
crontab -e # Her saat başı blog üret (0. dakika) 0 * * * * cd /var/www/vhosts/tuufi.com/httpdocs && /usr/bin/php artisan generate:tenant-blogs >> storage/logs/blog-cron.log 2>&1
NOT: Bu geçici bir çözümdür. Asıl sorun Laravel scheduler'ın komutu görmemesi.
Sistem çalışıyor mu kontrol et:
// 1. Bir sonraki aktif saati bekle (örn. saat 6, 9, 12...) // 2. Log dosyasını kontrol et: tail -f storage/logs/blog-cron.log // Beklenen çıktı: // "✅ Blog generation job dispatched" // 3. Horizon'da job'u kontrol et: // https://ixtif.com/admin/horizon/jobs // 4. Blog listesini kontrol et: // https://ixtif.com/admin/blog (yeni blog eklenmiş mi?)
| Bileşen | Durum | Detay |
|---|---|---|
| Crontab | Aktif | Her dakika schedule:run çalışıyor |
| Horizon | Aktif | 1 gün 3 saat uptime, 15 worker |
| blog-ai Queue | Tanımlı | ai-supervisor → max 50 jobs, 20dk timeout |
| Draft Pool | Dolu | 352 draft hazır (Tenant 2) |
| Tenant Settings | Aktif | AI enabled, 8 blog/day |
| Active Hours | Yapılandırılmış | 0, 3, 6, 9, 12, 15, 18, 21 |
| Schedule Registration | Sorunlu | Komut listede görünmüyor! |
Ana Sorun: generate:tenant-blogs komutu Laravel Scheduler tarafından tanınmıyor.
İlk Yapılacak: Cache temizleme ve schedule listesini kontrol etme.
Eğer Çözülmezse: Crontab'a direkt komut ekleyerek geçici çözüm.
Sistem Hazırlığı: Tüm altyapı hazır (Horizon, Queue, Drafts, Settings) - sadece scheduler registration sorunu var.
Beklenen Sonuç: Cache temizlendikten sonra sistem otomatik olarak çalışmaya başlamalı.