2012-07-11 212 views
1

所以我有一個代碼,檢查表中的記錄,並通過電子郵件發送。 table1中的字段有:ID - 用戶ID - 電子郵件 - 主題 - TXT 代碼如下(簡化):延遲發送電子郵件與PHP

$sql = "SELECT * FROM table1 where userid='$userid'"; 
$results = mysql_query($sql); 
while ($row = mysql_fetch_array($results)) 
{ 
mail($row['email'],$row['subject'],$row['txt']); 
} 

這將發送的所有電子郵件一次。 我希望它能夠發送隨機延遲的電子郵件。例如:發送第一封電子郵件,等待1小時,發送第二封,等待2小時,發送電子郵件3 等5小時,發送電子郵件5然後等待2小時... 我正在考慮使用功能rand(); 但我有不知道如何實現延遲... 任何想法?我感謝任何輸入

+1

與定期發送的電子郵件創建一個表,創建隨機發送時間,並通過專用的輔助 – zerkms 2012-07-11 02:05:49

+0

取決於量給他們(如果有提供的cPanel主機你有這樣的的cPanel)您計劃發送的電子郵件,請考慮爲您的郵件隊列使用不同的存儲引擎。例如,如果您使用Oracle或MySQL作爲您的站點數據,您可以考慮使用MongoDB或Couch作爲消息隊列。 – Travis 2012-07-11 02:08:22

+0

@Travis爲什麼?... – Petah 2012-07-11 02:12:40

回答

3

生成隨機數字,將它們以小時格式添加到時間戳,並將它們保存在數據庫中。

您可以使用PHP rand()功能和MySQL(特別是這個MySQL代碼:DATE_ADD(NOW(), INTERVAL $randInteger HOUR))做到這一點

運行一個腳本,與數據庫每小時檢查是否存在應發送的電子郵件/其電子郵件發送,然後根據返回的信息進行確認。

爲此,您可以使用cron的