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

如何让用户决定在PHP中发送邮件的特定时间延迟?,php,email,zend-framework,cron,cron-task,Php,Email,Zend Framework,Cron,Cron Task,我有基于Zend和PHP的软件 我正在寻找一种方法,让每个用户选择的时间延迟之前,约会提醒电子邮件将被发送 例如: 用户1:希望在活动前12小时发送电子邮件。 用户2:希望在活动或约会前24小时发送电子邮件 我可以使用cron作业根据事件之前或之后的特定时间搜索和触发事件,但我找不到一种方法让用户按照他们想要的方式自定义事件 非常感谢您对解决方案的帮助 那么为什么你不能给他们提供一个输入选项的地方(或设置一组选项,如30分钟、1小时、3小时、6小时、12小时、24小时等),然后将该值存储在一个表

我有基于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
   }

}
$query=“从提醒表中选择*
$query\u results=mysqli\u query($db,$query);
while($row=mysqli\u fetch\u row($query\u results)){
如果($row[4]==0){
$query=“选择appt time,其中appt name=”、“$row[1]”和appt user=”、“$row[2]”;
$timequery=mysqli\u查询($db$query);
$timequery=mysqli\u fetch\u assoc($timequery);
$appt time=date('Y-m-d H:I:S',strottime($timequery['appt-time']);
$appt-time2=新日期时间($appt时间);
//从数据库中获取当前时间
$query=“立即选择()”;
$currentQuery=mysqli\u查询($db$query);
$currentQuery=mysqli\u fetch\u数组($currentQuery);
$current time=date('Y-m-d H:I:S',strottime($currentQuery[0]);
$current-time2=新日期时间($current time);
$interval=$current-time2->diff($appt-time2);
//根据数据库中的值检查间隔,并在发送时更新
}
}


非常感谢您的想法!您是否认为按服务类型设置它是一个好主意,而不是每次约会都必须输入它。我可以让脚本确定预约的类型,然后查看服务类型的确切延迟设置。最终这将取决于您打算如何使用它。以上允许用户获得不同时间的不同事件。如果Mary的派对时间设置为12小时,我们可以根据您的服务理念将其归类为“派对”。所以每一方都会在12点发出提醒。但如果玛丽想让老板的生日改为24小时,这样她就不会忘记礼物了呢?是的,你可以!但是堆栈溢出是关于代码的,与我们分享你在做什么,我们将能够提供帮助!向我们展示您一直尝试使用的代码。