Belirli Tarihte İşlem Yaptırma
Örnek olarak sitemize üye olan bir kişinin bugünden 1 yıl sonraki tarihi veritabanına kaydettik. Kaydettiğimiz tarihe 30 gün kala kişiye mail göndermek istersek nasıl yapabiliriz?
Düşündüm düşündüm bir sonuca varamadım, yardımlarınızı bekliyorum dostlar. :)
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (6)
@mrknowitall, sorun yok arkadaş yanlış kodlar üzerinde çabalamasın diye yazdım.
@redline, problemi zaten php üzerinden çözüyorsun, ama cron işin içine girmezse, süre bitimine 30 gün kaldığını kontrol eden php dosyanı her gün elle çalıştırman gerek. Cron sadece bunu senin yerine ayarladığın saatte yapıyor.
Gözünde büyütme çok kolay. php tarafını hallet. Admin tarafında çalıştırdığında 30 gün kalanlara mail atan tarafı kodla manuelde olsa hazır olsun. Sonra cron ile otomatikleştirirsin.
Seni anlıyorum. Bende çok farklı değilim, hala öğrenme aşamasındayım. Bir şeyi yapmaya çalışırken örnekler üzerinde yola çıkarken önce örneğe sadık kalmak sonra aşama aşama kendine uyarlayıp çalıştığını görmek çalışmazsa hangi aşamada hata yaptığını anlamak önemli.
Önce adım adım ilerle. Cron işi sonraya kalsın. O da kolay göreceksin.
@pcmemo
Hocam daha önce Cronjob kullanmadım, şimdi Cpanel'e göz attım Cron İşleri diye bir kısım var. Çözerim umarım. :)
@mrknowitall
hocam her yazılımcı o kafalara geliyor genel olarak, mesleğin gereği sanırım. :D
Teşekkür ederim, Cpanel üzerinden değil de direk PHP ile çözebileceğimiz alternatif durum var mıdır acaba?
@pcmemo pardon! dogru diyorsunuz, yukardaki if sorgusu ile uye giris yapmayana kadar haberi olmaz.
Cronjob ile en mantiklisi.
Hangi kafa ile ben o if sorgusunu yaptim anlayamadim :) umarim soru yu soran arkadas cevabi kaide ye almaz.
Ayrica if li sorgudaki mantik timestap dan gidilirse 1 gun sonra dan da giremezdi ornek..
$expireDate=strtotime($row['user_expire_date']);
$currentTime=strtotime(date('Y/m/d H:i:s'));
if($currentTime > $expireDate){
//Email atilsin
// Uyelik sureniz bitmistir
//diger kodlariniz.
}else{
//Giris yapabilsin
//Ve normal diger kodlariniz.
}
@mrknowitall, bu sorguya göre kullanıcının önceden haberdar olması mümkün değil, girmeye çalıştığında haberi olacak.
Ayrıca ayrıca kod eksik bu mantığa göre tam sürenin dolduğu gün giremez ama ertesi gün girer.
diğer bir husus ta günde 1 kere cron için hiç bir server sorun çıkarmaz. Öyle 5dk yada her dakika için cron oluşturanlar iin geçerli bu sorun.
PCMEMO nun dedigi gibi yol haritasi izleyebilirsiniz,
1- Üyenin üyelik bitiş tarihini kaydettin.
2- Aynı anda 30 gün önce mail göndermek istiyorsan başka bir sütüna bitiş tarihinden bir ay öncesini tarihini (örnek: Uyari isimli bir sütuna) kaydet.
Cronjob yerine boyle bir sorgu ile de sorunu cozebilirsiniz.
Bazi hosting firmalari cronjob u cok kullandiginda sorun yaratabiliyor.
if($row['user_expire_date']== date('Y/m/d H:i:s')){
//Email atilsin
// Uyelik sureniz bitmistir
//diger kodlariniz.
}else{
//Giris yapabilsin
//Ve normal diger kodlariniz.
}
Kendime göre kısaca mantığını yazayım,
- Üyenin üyelik bitiş tarihini kaydettin.
- Aynı anda 30 gün önce mail göndermek istiyorsan başka bir sütüna bitiş tarihinden bir ay öncesini tarihini (örnek: Uyari isimli bir sütuna) kaydet.
- Bir dosya oluştur her gün (cron ile otomatik çalışsın) çalışınca Uyari sütunundaki tarih ile eşleşirse o üyeye mail göndersin.