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

时间:2014-12-08 19:59:07

标签: php email timer

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

我的服务器上有一个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);
}


?>

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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