2012-08-23 76 views
-1

我正在開發一個php腳本,我想向用戶發送自動郵件。 我用php腳本成功實現了一個cron作業,該腳本爲未決郵件簽出一個php郵件隊列表。 該腳本工作正常,但cron作業奇怪地工作,它發送郵件給用戶,但一次3或4。我只想發送一次郵件。我怎麼能實現它?PHP電子郵件Cron作業

我的cron作業每2分鐘檢查一次郵件隊列表。

謝謝!

+2

也許你應該發佈一些代碼:) –

+0

請發佈你的crontab行和一些你的PHP代碼簡介 – Touki

+0

你的表更新是否正確?換句話說,是發送超過1次的郵件,正確更新狀態'發送'或類似的? – Ben

回答

0

您需要維護表格中的字段,如sent_status

在獲取郵件時,使用SQL WHERE子句(如sent_status = 0),並在郵件發送給用戶sent_status = 1時通過電子郵件ID更新此字段。

因此,單個用戶無法批量獲取郵件。

2

每隔2分鐘? 我的猜測是以前的cron工作沒有完成,第二個工作開始,這就是爲什麼它發送多個電子郵件到同一個人或帳戶。

儘量降低頻率以每隔一小時左右

+0

哦!!!這可能是可能的..謝謝你會嘗試! – ashutosh

+2

您也可以創建pid文件以檢查腳本是否仍在運行,如果是 - 不要再運行它 –

0

添加類似於PID文件是如何工作的一些代碼:

$path = '/path/to/pid/file'; 

// Check for PID file's existance, if found exit. 
if (file_exists($path)) 
{ 
    echo 'PID File Exists'; 
    exit; 
} 

file_put_contents($path, '1'); // Create PID file 

// Execute your code 

unlink($path); // Delete the PID file 

一對夫婦的注意事項:

  • 如果你的腳本致命錯誤那麼你的腳本將永遠不會再運行,你需要理想的檢查last modified time的文件
  • 使用WGET運行cro ns是壞的,你的腳本仍然會超時,就像你通過瀏覽器運行它一樣。改爲使用PHP CLI運行它。
相關問題