ребята, я знаю, что это, вероятно, получил ответ, но я просто не могу понять, что мне нужно сделать.
У меня есть PHP-скрипт на моем сервере, который должен отправить электронное письмо после истечения таймера.
Информация, отраженная в таймере, не может измениться, так как она получила несколько сценариев, которые читаются из нее.
Проблема в том, что я не могу ограничить электронную почту только одним... она отправляет сотни.
Я попытался добавить переменную, которая отключена, чтобы предотвратить повторный запуск электронной почты, но она просто не сработает.
На самом деле нужна какая-то помощь.
<?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 = "[email protected]";
$subject = "text";
$txt = "text";
$headers = "From: [email protected]" . "\r\n" .
"CC: [email protected]";
mail($to,$subject,$txt,$headers);
}
?>
Похоже, вы установили diff
разницы во времени между некоторой даты и сейчас, то изменить это значение, когда выясняя дни, часы, минуты и т.д., а затем проверить, если diff
равна нулю. Когда вы выполняете тест diff
это количество секунд, а не исходный diff. Электронная почта выглядит так, как будто она будет отправляться каждую минуту.
вы можете просто изменить $ diff после его отправки, поэтому в условии if просто добавьте $diff= -1;
или просто сбросить время, или в условии if просто измените выражение. или даже настроить его на 1, а не на 0.
вам просто нужно остановить цикл... я думаю, что если число отрицательно, оно все равно вернет 0 (произошло несколько раз, но не уверен, где), поэтому убедитесь, что вы остановили его, а не полагаетесь на него, чтобы он был отрицательным.
$date - $curr
, не выполняя все остальные вычисления. Когда значение меньше некоторого порогового значения, например, ноль, сообщение отправляется. Но так как значение теперь всегда будет меньше нуля, вам необходимо отключить возможность повторной отправки сообщения (т. Е. Очистить тест, очистить контрольную дату, установить там, сделать этот флаг и т. Д.)