Сначала я хранить информацию мне нужно в переходном столе (не временный, просто нормальный стол, который я бросаю после того, как я закончил).
Затем я создаю письма, удаляя обработанные записи, когда я иду, и помещаю сгенерированные письма в таблицу «исходящие».
Наконец, сценарий запускает каждые N минут, принимая M записей из таблицы «исходящие»: он отправляет почту, а затем удаляет эту почту из таблицы исходящих сообщений.
Почему переходный стол? Поскольку сервер, на котором все это происходит, имеет очень строгие временные ограничения. Использование вышеуказанного метода позволяет частично генерировать письма; вы можете безопасно повторно запустить фазу генерации, не беспокоясь о генерировании повторяющихся писем. Поэтому, несмотря на то, что сервер убивает работу, сценарий продвигается вперед.
Отправляющий скрипт отправляет (60/N) * M почты в час, чтобы снова работать с ограничениями на сервере.