mgsmus benim kullandığım php sürümü 7.4 ve laravel 8 kullanıyorum. Başka neye bakmam gerekiyor ?
Cron Job Çalışmıyor
mgsmus bir de sunucudaki yetkili ile görüştüğümde verdiği cevap şu :
Bu durumu laravel’in communitylerinde araştırabilirsiniz. Cron ile gelen istekleri karşılamalısınız. Manuel istek göderdiğinizde response bekler ancak cron response beklemez ve kodunuz çalışmaz. Cron doğru bir şekilde çalışıyor, kodunuz bunu karşılamıyor.
cron u onlar kendileri de eklediler. Ama yine de sonuç alamıyorum.
- Düzenlendi
caglar_kocak Terminalde kullandığınız php sürümü ile web sunucusunun kullandığınız php sürümü farklı olabilir, onu sordum. Terminalde php -v
yaptığınızda 7.4 görüyor musunuz?
schedule:run çalıştığını yazmışsınız, onu farketmemişim.
Kernel ya da ConsoleKernel ile ilgili bir işlem yaptınız mı? Bir de cron loglarına baktınız mı? Ubuntu için grep CRON /var/log/syslog
; CentOS için tail /var/log/cron
yapıp loglara bakın.
caglar_kocak Plesk kullanıyorum.
cPanelde'de Zamanlanmış Görevler şeklinde aratırsanız benzer menü olması lazım.
mgsmus Kernel aşağıdaki gibi , ConsoleKernel de ise herhangi bir şey yapmadım.
class Kernel extends ConsoleKernel
{
protected $commands = [
//
];
protected function schedule(Schedule $schedule)
{
$schedule->call(function () {
info('Bu Cron Job deneme mesajıdır. Her 1 dakika da bir dosyaya yazması lazım');
})->everyMinute();
}
protected function commands()
{
$this->load(__DIR__.'/Commands');
require base_path('routes/console.php');
}
}
caglar_kocak Terminalde crontab -e
yazınca eklediğiniz girdiyi görüyor musunuz?
evet görüyorum. Yani sunucu tarafında çağrılıyor ancak kod tarafında karşılanmıyor gibi bir cevap verildi bana. Manuel olarak girip çalıştırdığımda düzenli olarak çalışıyor. Hatta php artisan schedule:work
komutunu terminalde çalıştırdığımda belli bir süre cron düzgün çalışıyor. (sanırsam 7-8 sat kadar)
Paylaşımlı hosting kullanıyorum bununla ilgili bir sorun olabilir mi ?
mgsmus evet görüyorum. Sunucu ile iletişime geçtiğim de ısrarla kod tarafında sorun var diyorlar. Log kayıtlarına baktığımız da cron tetikleniyor ve bir sorun yok diyorlar.
caglar_kocak Aklıma tek gelen şu, sunucuya sıfır bir Laravel kurup deneyin.
mgsmus Mustafa abi dökümanda şöyle bir şey var ,
To utilize this feature, your application must be using the database, memcached, dynamodb, or redis cache driver as your application's default cache driver. In addition, all servers must be communicating with the same central cache server.
config/cache.php dosyasına baktım da
'default' => env('CACHE_DRIVER', 'file'),
Sorun buradan kaynaklanıyor olabilir mi ?
caglar_kocak withoutOverlapping için cache gerekiyor. onOneServer özellikliği için de cache gerekiyor ve bu özellik file driver tarafından desteklenmiyor. Bu açıklama bunun için ama siz bunların hiçbirini kullanmıyorsunuz. Task scheduling varsayılan olarak cache kullanıyor mu bilmiyorum ama kullanıyorsa ve yaşadığınız sıkıntının sebebi buysa büyük ihtimalle driver'dan önce storage klasörünün okuma yazma izinleriyle ilgili bir sıkıntı var demektir.
mgsmus Yok doğru söylüyorsun abi onunla da alakalı olamaz. Artık kafayı yedirtme noktasına geldi bana. Bence yolu düzgün algılamıyor. Sonuçta manuel olarak terminalden çalıştırdığım da sorun olmuyor.
Yolu şu şekilde girdim c panelde dosya yöneticisinden projenin olduğu yere baktım. orada /home /name ve bunların altında projeler var.
ben de yolu cd /home/name/project olarak verdim. Acaba başka bir şeyler eklemem gerekli olabilir mi ?
caglar_kocak cd kullanmadan şu şekilde yapın. Daha önce de yazdım:
* * * * * /path/to/php /path/to/project/artisan schedule:run >> /dev/null 2>&1
- Düzenlendi
mgsmus * * * * * /home/name/php /home/name/project/artisan schedule:run >> /dev/null 2>&1
demi ?
mgsmus hmmm tamam abi anladım. Php ye giden yol demi ? benimki şu sanırsam ,
/opt/alt/php74/usr/bin/php
- En İyi Yanıtcaglar_kocak tarafından
caglar_kocak Hayır. PHP binary yolunu yazıyorsunuz. Mesela cPanel kullanıyorsunuz, projeniz PHP 8.1 kullanıyorsa /usr/bin/ea-php81
yazıyorsunuz. Tam yolu bilmiyorum, dokümanlara bakıp yazdım.
* * * * * /usr/bin/ea-php81 /home/name/project/artisan schedule:run >> /dev/null 2>&1
mgsmus abi bulamadım php nin yolunu. cpanelde hangi menüden bulabilirim ?
caglar_kocak Cron ile alakalı yerde yazıyor olabilir.