Я создал таблицу базы данных электронной почты. Я вставлю все электронные письма, которые мое приложение PHP должно отправлять в эту таблицу.
Другой сценарий PHP затем будет искать все неотправленные электронные письма и отправлять их.
Я запускаю этот скрипт с помощью cronjobs. К сожалению, cronjobs могут выполняться не чаще одного раза в минуту. Так что в худшем случае пользователь должен подождать одну минуту, пока его электронное письмо действительно не будет отправлено.
Моя текущая идея обходного пути заключается в вызове сценария с дополнительным параметром сна и дублировании 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
В приведенном выше примере сценарий будет запускаться каждые 10 секунд. Первая строка сценария emails.php будет выглядеть так:
sleep($_REQUEST['sleep']);