Как запланировать рассылку на PHP? - PullRequest
0 голосов
/ 28 февраля 2019

Я работаю на платформе, чтобы отправить кампанию по электронной почте в php.У меня просто проблема, как я могу настроить функцию отправки почты php в час, определенный пользователем.Я думал об использовании задания Cron, но, кажется, трудно написать задание Cron, которое отправляет URL-запрос (потому что мне нужны параметры электронной почты, поэтому я не могу просто выполнить скрипт php).Я надеюсь, что вы поможете мне найти решение этой проблемы.Спасибо за ваши ответы!

1 Ответ

0 голосов
/ 28 февраля 2019
  1. Сделай свою домашнюю работу.Вам следует изучить cron и PHP

Как создать работу cron с использованием PHP?

https://www.a2hosting.com/kb/developer-corner/php/run-php-scripts-from-cron-jobs

https://packagist.org/packages/peppeocchi/php-cron-scheduler

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

После выхода из PHP послеон запускается сервером, вы можете использовать системную таблицу cron для запуска вашего сценария Sender в назначенное время.Для этого у вас есть 2 варианта:

Опция 1

Если ваш сервер работает на локальном хосте: 9091

Сохраните в задании cron идентификатор расписания из базы данных, чтобы ваш скрипт отправителя мог получить настройки из базы данных для отправки электронной почты.

# replace * * * * * with the schedule from the user
* * * * * curl localhost:9091/sendEmail?id=123

Вы также можете поместить информациюнапрямую, но вы потеряете расписание, если потеряете таблицу cron, если не сохраните в базе данных, поэтому лучше сохранить ее.

# replace * * * * * with the schedule from the user
* * * * * curl localhost:9091/sendEmail?addr=name@email.com&subscription=pets,house,food

Option 2

Если вы не ожидаете, что у вас будет много пользователей / расписаний, вы можете создавать задания cron каждый раз, когда пользователи запрашивают его, затем вы вызываете свой сценарий Sender, и этот сценарий получает из базы данных (запрос SELECT) всерасписания и отправьте на него электронную почту.

# Every hour for example
0 * * * * php path/to/script.php
...