php cronjob auto reminder email -


i have built webapplication user pays 1/3/6 months , joins site , need send user reminder mail before 15 days of account expiration , how can achieve ? not understanding correct logic ... storing registered date , expiring date in database ,will below logic work fine ?

<?php $expiringdate = "2015-07-21"; $todaydate = date("y-m-d"); $date = date("y-m-d",strtotime("-15 days", strtotime($expiringdate))); if($todaydate == $date){ //send mail }else{ //quit }?> 

and want change value in database if today expiring day ... better in other cronjob or can in above code this..

 <?php $expiringdate = "2015-07-21"; $todaydate = date("y-m-d"); $date = date("y-m-d",strtotime("-15 days", strtotime($expiringdate))); if($todaydate == $date){ //send mail }else{ //check , change value if today expiring     }?> 

am going in right path , secure or there other better way job

i suggest running cron job every day.

your php script should check people expire in 15 days.

however else pointed out, if cron job fails 1 day might miss out batch of people.

therefore check people 15 days or less remaining, don't have reminder flag set against them in database. means if cron job failed 15 days remaining, on 14th/13th/12th, etc remaining day script see reminder flag isn't set against them , still send reminder.

<?php $remindersent = false; // value db (true or false) $expiryactioned = false; // value db (true or false) $expiringdate = strtotime('2015-07-21'); // date db $todaydate = time(); $reminderdate = strtotime("-15 days", $expiringdate); if ($todaydate >= $reminderdate && $remindersent == false) {     // send mail     // set flag $remindersent in database indicate reminder has been sent } elseif ($todaydate >= $expiringdate && $expiryactioned == false) {     //     // set $expiryactioned in database indicate user has expired , has been done } ?> 

however, rather select , run through them above logic, build above logic sql query better efficiency.

quick example:

// select users expire in 15 days or less select `userid`, `name`, `email` `user` now() >= date_sub(`expiry`, interval 15 day) , reminder_sent = 0  // loop through each user, send them email , then: update `user` set reminder_sent = 1 `userid` = x 

and

// select users have expired select `userid`, `name`, `email` `user` now() >= `expiry` , `expiry_actioned` = 0  // loop through each user, whatever need , then: update `user` set expiry_actioned = 1 `userid` = x 

Comments

Popular posts from this blog

Java 3D LWJGL collision -

spring - SubProtocolWebSocketHandler - No handlers -

methods - python can't use function in submodule -