Giriş yap
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. :)

pcmemo
7 gün önce

Kendime göre kısaca mantığını yazayım,

  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.
  3. 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.
mrknowitall
7 gün önce

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.

}

pcmemo
7 gün önce

@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.

mrknowitall
7 gün önce

@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.

}


redline
6 gün önce

@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
6 gün önce

@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.

Nasıl akıllıca soru sorulur?
Daha hızlı ve kaliteli cevaplar almak için önce nasıl soru sorulacağını bilmeniz gerekir. Eğer bilmiyorsanız bu yazı serisini okuyun.

Cevap yaz