대량 이메일을 한 번에 보내는 크론 작업

대량 이메일을 한 번에 보내는 크론 작업

나는 사용자에게 자동화된 메일을 보내고 싶은 PHP 스크립트를 개발했습니다. 보류 중인 메일에 대한 PHP 메일 대기열 테이블을 확인하는 PHP 스크립트를 사용하여 cron 작업을 성공적으로 구현했습니다. 스크립트는 잘 작동하지만 cron 작업은 이상하게 작동합니다. 메일을 사용자에게 보내지만 한 번에 3~4개씩 보냅니다. 한 번만 메일을 보내고 싶었어요. 어떻게 이를 달성할 수 있나요?

메일이 전송되었는지 여부를 확인하는 조건을 사용합니다. 0이면 메일을 보내고 값을 1로 업데이트합니다. 이 조건은 제대로 작동합니다. 또한 상대 데이터베이스는 사용자당 하나의 항목만 표시하므로 논리적으로 하나의 이메일만 사용자에게 전송되어야 하지만 대신 크론 작업은 한 번에 3~4개의 동일한 이메일을 사용자에게 보냅니다.

2분마다 cron 작업을 설정했습니다. 명령은 다음과 같습니다.

2 * * * * wget (Http PATH to SERVER)/Utils/MailQueue.php

답변1

스크립트의 여러 인스턴스가 동시에 실행될 수 있다고 생각되면 어떤 형태의 잠금 메커니즘을 사용하십시오. wget을 스크립트에 넣고대군명령

2 * * * * /usr/bin/flock -n /tmp/myAppLock.lck /path/to/your/wgetscript 

MailQueue.php 스크립트가 cron을 실행 중인 동일한 시스템에 있으면 wget이 필요하지 않습니다.

2 * * * * /usr/bin/flock -n /tmp/myAppLock.lck /usr/bin/php /path/to/Utils/MailQueue.php

웹서버 없이도 작동하므로 아마도 더 나은 솔루션이 될 것입니다.

관련 정보