簡體   English   中英

PHP- MySQL cronjob發送郵件循環重復

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM