PHP таймер для отправки электронной почты один раз, когда таймер заканчивается

0

ребята, я знаю, что это, вероятно, получил ответ, но я просто не могу понять, что мне нужно сделать.

У меня есть 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);
}


?>
Теги:
timer
email

2 ответа

0

Похоже, вы установили diff разницы во времени между некоторой даты и сейчас, то изменить это значение, когда выясняя дни, часы, минуты и т.д., а затем проверить, если diff равна нулю. Когда вы выполняете тест diff это количество секунд, а не исходный diff. Электронная почта выглядит так, как будто она будет отправляться каждую минуту.

  • 0
    Я думаю, что это то, что происходит, я предполагаю, что значение секунд будет стремиться к нулю или ровно «0», чтобы вызвать электронную почту. это тот случай, когда у нас осталось 410 секунд, и он посылает каждый раз, когда последняя цифра достигает нуля? как я получаю электронное письмо каждые 10 секунд, а не каждую минуту, как указано выше?
  • 0
    Если вы хотите отправить электронное письмо один раз, когда закончится таймер, почему бы не сравнить результаты $date - $curr , не выполняя все остальные вычисления. Когда значение меньше некоторого порогового значения, например, ноль, сообщение отправляется. Но так как значение теперь всегда будет меньше нуля, вам необходимо отключить возможность повторной отправки сообщения (т. Е. Очистить тест, очистить контрольную дату, установить там, сделать этот флаг и т. Д.)
0

вы можете просто изменить $ diff после его отправки, поэтому в условии if просто добавьте $diff= -1; или просто сбросить время, или в условии if просто измените выражение. или даже настроить его на 1, а не на 0.

вам просто нужно остановить цикл... я думаю, что если число отрицательно, оно все равно вернет 0 (произошло несколько раз, но не уверен, где), поэтому убедитесь, что вы остановили его, а не полагаетесь на него, чтобы он был отрицательным.

  • 0
    я полностью согласен, я попытался добавить разрешенную переменную:
  • 0
    Как в: $ Enabled = true:
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню