Php - отправить электронное письмо с задержкой в ​​x раз

Мне нужно отправить и отправить по электронной почте через x раз, используя PHP-код.

Я не хочу использовать cronjob. Итак, этот код не работает, потому что код php печатается один раз и не меняет DOM автоматически, как js. Но мне нужно что-то вроде этого:

  $today = date('Y-m-d H:i:s');
  $dataorder = date("Y-m-d H:i:s", $order->created);
  $delay_days = 240;
  $senday = date('Y-m-d H:i:s', strtotime( "$dataorder + $delay_days min" ));

   if ($today == $senday) {

    echo "sent";

   } else {

    echo "not yet sent";

   }

Теперь я могу использовать js, но я не уверен, что это сработает, этот скрипт php - это вся php-страница в бэкэнде. итак, могу ли я использовать только php? нравится использовать функцию сна? или другой

Я не знаю, это лучший способ.

(В частности, это система отправки электронных писем, чтобы не забыть оставить отзыв на сайте.)

Спасибо

Будет очень сложно добиться чего-то подобного без планировщика задач, такого как cronjob.

Prodigle 10.09.2018 10:18

неужели нет другого способа отправить письмо с задержкой? использовать сон мог работать? или time_sleep_until. Я пытаюсь использовать его, но безуспешно. Я действительно этого не знаю!

Marco Romano 10.09.2018 10:21

@MarcoRomano Хотите, чтобы программа спала 240 дней? Это убьет ваш сервер. Вам нужно будет использовать задание cron или другой способ его планирования. Другого выхода нет. Сохраните задачу в базе данных, а затем попросите задание cron выбрать задачи из нее.

Brahma Dev 10.09.2018 10:25

@BrahmaDev было 240 минут только для проверки. Будет 5 дней. Во всяком случае, я думаю, это то же самое. Проблема в том, что с помощью cronjob я могу отправлять электронную почту один день в неделю, но она отправляет электронные письма пользователям в тот же день. Мне нужно отправлять электронные письма на расстоянии 5 дней с момента регистрации пользователя.

Marco Romano 10.09.2018 10:32

вы просто пытаетесь клонировать функции cron в PHP. Излишний набор осложнений по непонятным причинам. Вы можете запускать cron каждый раз и проверять, какое письмо нужно отправить. Легко и просто

Lelio Faieta 10.09.2018 10:50

@LelioFaieta, спасибо. так что я не знаю, как это сделать, но хорошо, я пойду изучать cron, похоже, есть только этот способ!

Marco Romano 10.09.2018 10:53

Cron будет запускать php-скрипт каждые N секунд. Создайте сценарий для проверки отправляемых писем, а затем запланируйте его запуск с заданным интервалом. Примечание: cron - это функция ОС Linux, а не функция PHP ...

Lelio Faieta 10.09.2018 11:14

@MarcoRomano Вы можете запланировать запуск cron каждую минуту или раз в год. Попробуйте какой-нибудь онлайн-инструмент cron для лучшего понимания, например crontab.guru

Brahma Dev 10.09.2018 15:40
0
8
349
1

Ответы 1

Вы можете добиться этого следующим образом:

  1. Поскольку у вас есть данные о пользователях, вы знаете, на какую дату зарегистрирован конкретный пользователь.

  2. Напишите сценарий, который будет выполняться каждый день и будет выбирать всех пользователей, зарегистрированных 5 дней назад. Письмо будет отправлено всем пользователям, подходящим для этой даты.

  3. Скрипт будет продолжать выполняться до тех пор, пока на эту дату не будет обработан последний пользователь.

У меня есть дата регистрации пользователя. Итак, я могу отфильтровать пользователя до того, как cronjob отправит электронное письмо, вы имеете в виду это? Это могло быть интересно.

Marco Romano 10.09.2018 10:50

@MarcoRomano да ... таким образом будет выбран только пользователь, зарегистрированный 5 дней назад.

Bhagwan Parge 10.09.2018 10:51

Другие вопросы по теме