2010-09-27 27 views

回答

3

如果你需要創建一個計劃任務,我會建議創建一個Cron Job

1

您可以使用sleep()函數掛起腳本。但這不是一個好的解決方案。更好的方法是使用Cron,它允許您每40分鐘執行一次腳本。該腳本本身只檢查了多少次它迄今已執行 - 這些信息可以存儲在一些文件:

$counter = file_exists('counter') ? file_get_contents('counter') : 1; 

echo sprintf('Send %d portion of emails.', $counter); 

file_put_contents('counter', ++$counter); 
0

一個解決方案是創建一個數據庫表格以保存您發送的電子郵件的詳細信息。比方說,它看起來像這樣:

CREATE TABLE SentEmail (
    email_id INT NOT NULL, 
    recipient_id INT NOT NULL, 
    time_sent DATETIME NOT NULL, 
    PRIMARY KEY (email_id, recipient) 
) 

這裏email_id應該是一個外鍵的表包含你已經標記爲發送電子郵件,並recipient_id應該是一個外鍵包含收件人的詳細信息的表格。 time_sent顯然記錄了電子郵件發送的時間。

現在,當你想發送電子郵件,你會想知道

  • 多少封電子郵件已經發送這一小時;這可以使用COUNT查詢
  • 發現,他們已經發送了您當前正在處理的電子郵件;這也是一個簡單的查詢。

在這方面的一個可能的變化是在表中爲你打算髮送,而不是隻有我一個。到目前爲止已發送的每一封電子郵件,每一個電子郵件的用戶組合成一排,並且具有指示郵件是否有一欄已被髮送給該用戶。這可以很容易地告訴你還有哪些人還需要發送電子郵件。

按照其他人的建議,您可以將此方法與Cron作業相結合,以確保定期處理電子郵件隊列。