PHP计时器在计时器用完时发送电子邮件一次


PHP timer to send email once when timer runs out

>伙计们,我知道这可能已经得到了答案,但我似乎无法收集完成这项工作所需的内容。

我的服务器上有一个PHP脚本,一旦计时器耗尽,它应该发送电子邮件。

计时器中回显的信息无法更改,因为它有一些从中读取的脚本。

问题是我似乎不能将电子邮件限制为一个....它发送数百人。

我尝试添加一个 if 函数关闭的变量以防止再次触发电子邮件,但它不起作用。

真的需要一些帮助。

<?php
$curr = time();
$date = strtotime("Dec 08, 2014 7:43PM");
$diff = $date - $curr;
$diff_dd = floor($diff / 86400);
$diff %= 86400;
$diff_hh = floor($diff / 3600);
$diff %= 3600;
$diff_mm = floor($diff / 60);
$diff %= 60;
$diff_ss = $diff;
$all = diff_dd + $diff_hh + $diff_mm + $diff_ss;
echo sprintf("%02d%02d%02d%02d",$diff_dd,$diff_hh,$diff_mm, $diff_ss);
if($diff == 0)
{
$Email --;
$to = "x@X.com";
$subject = "text";
$txt = "text";
$headers = "From: notification@X.com" . "'r'n" .
"CC: somebodyelse@example.com";
mail($to,$subject,$txt,$headers);
}

?>
看起来

diff某个日期和现在之间的时间差,然后在计算天、小时、分钟等时修改该值,然后测试diff是否为零。当您进行测试时,diff是秒数,而不是原始差异。电子邮件看起来每分钟发送一次。

您可以在

发送后简单地更改$diff,因此在 if 条件中只需添加$diff= -1;或重置时间,或者在 if 条件中只需更改表达式。 甚至将其设置为在 1 而不是 0 上触发。

你只需要停止循环...我认为如果数字为负数,它仍然会返回 0(发生过几次但不确定在哪里),所以请确保你停止它,而不是依赖它变成负数。