Одним из решений было бы создание таблицы базы данных для хранения подробностей отправленных вами электронных писем.Допустим, это выглядит так:
CREATE TABLE SentEmail (
email_id INT NOT NULL,
recipient_id INT NOT NULL,
time_sent DATETIME NOT NULL,
PRIMARY KEY (email_id, recipient)
)
Здесь email_id
должен быть внешним ключом таблицы, содержащей письма, помеченные для отправки, а recipient_id
должен быть внешним ключом таблицы.содержащие данные ваших получателей.time_sent
очевидно записывает время отправки электронного письма.
Теперь, когда вы хотите отправлять электронные письма, вы захотите узнать
- , сколько писем было отправлено в этот час;это можно найти с помощью
COUNT
запроса - , которому уже было отправлено письмо, с которым вы сейчас работаете;это также простой запрос.
Возможным вариантом этого является наличие строки в таблице для каждой комбинации «электронная почта-пользователь», которую вы намереваетесь отправить, а не одна для каждой электронной почты, отправленной до сих пор.и иметь столбец, указывающий, было ли это письмо отправлено этому пользователю.Это позволило бы также легко определить, кому вам все еще нужно отправлять электронное письмо.
Вы бы совмещали этот подход с заданием Cron, как предлагали другие, чтобы регулярно обрабатывать очередь писем.