당신이 구현하고자하는 스토리지 계층을 이용하여 기본 큐입니다.
User (
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
email VARCHAR(125) NOT NULL
);
User_Group (
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
user_id INTEGER UNSIGNED NOT NULL,
group_id INTEGER UNSIGNED NOT NULL
);
Group (
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(75) NOT NULL,
description VARCHAR(255)
)
MailingList (
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
user_id INTEGER UNSIGNED NOT NULL,
);
# mails to be sent out to groups/all
MailQueue (
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
group_id INTEGER UNSIGNED,
time_to_send DATETIME DEFAULT CURRENT_TIMESTAMP
);
당신은 그룹 이메일이 유효한 유닉스 타임 스탬프로 MailQueue의 항목을 입력 할 수 대기열 것이다. 테이블을 적절하게 활용할 수 있도록 각 사용자마다 할당 할 그룹 '모두'를 만들어야합니다. 당신은 너무처럼 크론 쿼리를 실행합니다 : 중복 이메일 항목을 보내지 않도록하는 것처럼 당신이 그들을 사용 후
SELECT User.email
FROM MailQueue
INNER JOIN User_Group ON (MailQueue.group_id = User_Group.id)
INNER JOIN User ON (User_Group.user_id = User.id)
WHERE MailQueue.time_to_send < NOW();
당신은 당신이 결과 집합을 삭제 확인해야합니다. 보낸 이메일의 기록을 남기고 싶다면 sent_email = 1
을 나타내는 다른 TINYINT(1) UNSIGNED
필드를 추가하고 값이 0이면 결과를 수집하도록 SELECT
쿼리를 수정하십시오.
제목은 "일정 관리"이지만 제목은 "지원"입니다. 1 명 이상의 수신자. 전자 메일 서버는 전자 메일을 대기시킬 수 있으며 지정된 간격으로 만 보낼 수 있습니다. –