Я создал таблицу базы данных по электронной почте. Я буду вставлять все письма, которые нужно отправить моему приложению PHP в эту таблицу.
Другой PHP script будет искать все неотправленные письма и отправляет их.
Я запускаю этот script с помощью cronjobs. К сожалению, cronjobs может работать только максимум один раз в минуту. Поэтому в худшем случае пользователю нужно подождать одну минуту, пока его электронная почта действительно не будет отправлена.
Моя текущая идея обходного пути вызывает script с дополнительным параметром сна и дублированием cronjobs.
Пример:
* * * * * curl emails.php?sleep=0 >/dev/null 2>&1
* * * * * curl emails.php?sleep=10 >/dev/null 2>&1
* * * * * curl emails.php?sleep=20 >/dev/null 2>&1
* * * * * curl emails.php?sleep=30 >/dev/null 2>&1
* * * * * curl emails.php?sleep=40 >/dev/null 2>&1
* * * * * curl emails.php?sleep=50 >/dev/null 2>&1
В приведенном выше примере script будет выполняться каждые 10 секунд. Первая строка emails.PHP скрипт будет выглядеть следующим образом:
sleep($_REQUEST['sleep']);