Запустите функцию за несколько часов до наступления события - PullRequest
0 голосов
/ 10 мая 2019

У меня есть одна проблема. Я изучаю CakePHP 3, и я хочу сделать следующее: Пользователь вводит дату и время (они сохраняются в mysql как формат даты и времени), и система должна отправить электронное письмо за несколько часов до даты и времени, которое он вводит (например, за 1 час до этого)

Однако я хочу сделать это без cronjob.

Таким образом, пользователь вводит 2019-05-12 в 12:00, и я хочу немедленно запланировать задачу по отправке электронной почты на 2019-05-12 в 11:00.

Возможно ли это, и да, не могли бы вы дать мне какие-нибудь указатели? Я также проверил задачи CakePHP, но похоже, что пока не вижу всей картины

1 Ответ

1 голос
/ 10 мая 2019

создать оболочку

bin/cake bake shell CronJobs

открыть созданную оболочку и создать метод для отправки электронной почты, например:

public function sendEmal()
{
}

Внутри этого метода добавьте свой код для выбора данных и почтовую программу для отправки почты.

теперь в вашей задаче cron поставьте задачу и укажите на этот скрипт оболочки, пример

* 1 * * * bin/cake CronJob sendEmail

Пожалуйста, прочитайте:

  1. https://book.cakephp.org/3.0/en/console-and-shells/shells.html
  2. https://book.cakephp.org/3.0/en/console-and-shells/cron-jobs.html
  3. https://book.cakephp.org/3.0/en/core-libraries/email.html

Обновление:

Тем не менее, я хочу сделать это без cronjob.

Другой способ - реализовать систему очередей.

Читайте здесь для получения дополнительной информации

...