如何让用户决定在 PHP 中发送邮件的特定时间延迟?



我有基于Zend和PHP构建的软件。

我正在寻找一种方法,让每个用户在发送约会提醒电子邮件之前选择时间延迟。

例如:

用户 1:希望在事件发生前 12 小时发送电子邮件。 用户 2:希望在活动或约会前 24 小时发送电子邮件。

我可以使用 cron 作业根据事件之前或之后的特定时间搜索和触发事件,但我找不到让用户按照他们想要的方式自定义它的方法。

您对解决方法的帮助将不胜感激!

那么,为什么不能在某个地方提供它们来输入选项(或设置选项组,即 30 分钟、1 小时、3 小时、6 小时、12 小时、24 小时等( - 然后将该值存储在一个表中,并引用约会和它适用的用户?

像这样:

id    |    appointment   |       user       |   reminder(hrs)  |   sent
1    |    Joe's Bday    |   jack@test.com  |       24         |     1
2    |    Joe's Bday    |   mary@test.com  |       12         |     0

如何使用它的示例

$query = "Select * from remindertable;"
$query_results = mysqli_query($db, $query);
while($row = mysqli_fetch_row($query_results)) {
if($row[4] == 0) {       
$query = "SELECT appt-time FROM <table w data> WHERE appt-name = '" .$row[1] ."' AND appt-user ='" .$row[2] ."'";
$timequery = mysqli_query($db, $query);
$timequery = mysqli_fetch_assoc($timequery);
$appt-time = date('Y-m-d H:I:S', strtotime($timequery['appt-time']));
$appt-time2 = new DateTime($appt-time);
//Get Current Time from Database
$query = "SELECT NOW()";
$currentQuery = mysqli_query($db, $query);
$currentQuery = mysqli_fetch_array($currentQuery);
$current-time = date('Y-m-d H:I:S', strtotime($currentQuery[0]));
$current-time2 = new DateTime($current-time);
$interval = $current-time2->diff($appt-time2);
//CHECK THE INTERVAL AGAINST THE VALUE FROM THE DATABASE AND UPDATE WHEN SENT
}
}

http://php.net/manual/en/class.datetime.php

http://php.net/manual/en/datetime.diff.php

http://php.net/manual/en/class.dateinterval.php

最新更新