Você pode usar uma tabela mysql para isso, já que você já está trabalhando no mysql! Uma tabela como essa deve ser suficiente -
create table (
userid varchar(100),
useremail varchar(100),
int mailsent default 0
);
Seu trabalho de criador criará (ou excluirá) linhas dessa tabela.
O seu mailer irá puxar todas as linhas com mailsent
definido como 0, enviar e-mail e definir mailsent
como 1.
No entanto, se você realmente , realmente , realmente quer usar o arquivo de texto - aqui está uma abordagem -
-
Digamos que a primeira chamada da sua tarefa do criador cron crie um arquivo como este -
user1,[email protected] user2,[email protected] user3,[email protected]
-
Agora, em algum momento, a tarefa do seu mailer será executada, ele selecionará as linhas desse arquivo que possuem o emailid, enviarão os destinatários e removerão os IDs de email nessas linhas. (Você pode usar perl ou sed para isso - tenha cuidado com a gravação síncrona deste arquivo do criador) após esta operação, seu arquivo se tornará
user1 user2 user3
-
Depois de algum tempo, seu criador adiciona mais dois usuários, usuário4 e usuário5. Seu arquivo agora se torna
user1 user2 user3 user4,[email protected] user5,[email protected]
-
Quando a tarefa do programa de correio for executada novamente, ela será enviada apenas por e-mail para pessoas que possuam IDs de e-mail especificados como 0 na etapa 2.
Existem várias formas de funcionamento deste esquema.