[英]PHP- MySQL cronjob sending mail loop repeat
在我的一個Web應用程序中,我正在通過AMAZON SES使用cron作業功能向用戶發送每日郵件。 cronjob將在10分鍾的間隔內運行。 這個過程會喜歡
$sql-mysql_query("SELECT * FROM users WHERE send_date='2013-07-13' and alert_send=0");
while($row=mysql_fetch_array($sql)) {
// Get email id of the user and compose meggage
// Create a new Amazon Request and send the mail
// Update alert_send=1
}
如果循環中包含更多計數,即假設有500封郵件,則在接下來的10分鍾,另一個cron作業將開始並開始發送郵件。 最終,用戶將收到兩次或相應三次的郵件。
即。 如果循環包含500個數據
Cron A將從12:00開始,獲取所有500個數據並發送電子郵件。 假設在10分鍾內發送郵件120。
Cron B將在12:10開始,並從120-500提取數據。這還將發送郵件。
通過此結果,第121位用戶將收到來自Cron A和Cron B的郵件。
我嘗試限制查詢數量。 但是問題是我們無法預測每個循環何時結束。 即有時發送郵件需要4、2、5、6或10秒。
有什么辦法可以避免這種重復? 有什么辦法可以殺死現有的cronjob並重新開始嗎?
提前致謝
每當cronjob啟動時,您都可以殺死正在運行的cronjob
像這樣的名字:
pkill process-name
或像這樣的id:
kill 1234
您也可以看看這個使用php代碼的博客:
http://abhinavsingh.com/blog/2009/12/how-to-use-locks-in-php-cron-jobs-to-avoid-cron-overlaps/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.