毎月の定期請求書がありますが、有効期限の6日前にその人にメールを送信したいのですが、すでに送信されている場合は再送信しないでください。PHPでの作業。現在、データベースには、payedUntilとsentReminderの2つの列があり、どちらもDATETIMEですが、必要に応じて変更できます。
したがって、擬似コードでは:
IF(between 6 days before expiration and expiration date AND reminder NOT sent)
send reminder
set that reminder was already sent
else
if the month has past and time for new reminder, go back to top
来月、プロセス全体を再開します。人々はその月の1日、9日、または任意の日付に期限切れになる可能性があることに注意してください。助けてください!
編集: 私は基本的に、メンバーシップの有効期限が切れる6〜5日前に、毎月誰かにリマインダーを送信したいと思います。それで全部です。ここに私のコードの一部がありますが、最後のリマインダーを送信した時間が新しいリマインダーを生成するのに十分に経過したかどうかを確認する方法に悩まされ続けています...ここにすべてのコメントをお詫びします!!
$paidUntil = strtotime($oneUser->paidUntil);
$paidUntilMonthPrior = strtotime('-1 month', $paidUntil);
$reminderSent = strtotime($oneUser->reminderSent);
//$paidDateRemindRange = strtotime('-6 days', $paidUntil); //6 days till u remind somebody
$noNeedToSend = strtotime('+25 days', $reminderSent);
//$paidDateReset = strtotime('+1 day', $paidUntil);
//if($thisMonth==date('F',$paidUntil)) {
// $sameMonth=true;
//}
//if($todayTime>$paidDateReminder && $todayTime<$paidUntil && $todayTime>$reminderSent)
// $expirationRange=true;
if($todayTime < $noNeedToSend) {
// is within 25 days from last sending - do nothing
}
elseif($todayTime>$noNeedToSend && $todayTime<$paidUntil) {
//is between 25 days and still less than the paid until time AND has not been sent this cycle
// send expiration email and mark that its been sent
$expirationRange=true;
}