2013-11-26 35 views
0

我有一個高爾夫聯盟計劃的用戶可以發郵件給他們的成員。成員的平均數量是40,但一些聯盟可以有多達150個成員。用PHP觸發一個cron

電子郵件腳本使用phpmailer發送每個成員個性化的消息,並運作良好。我有一個郵件頁面,在腳本執行時顯示發送gif。每個電子郵件的瀏覽器時間少於1.5秒(在我的連接上)執行,這取決於發送的電子郵件的數量,瀏覽器可能會連續數分鐘。

我想要做的是將執行傳遞給服務器並將瀏覽器釋放回給用戶,以便用戶不會盯着加載映像。

我可以通過在數據庫中存儲郵件數據,然後每隔幾分鐘運行一次cron來執行郵件腳本,但我會懷疑cron會不斷運行造成的問題。

有沒有更好的方法來做到這一點?我想留在PHPMailer

+0

使用'exec()'類型的東西來啓動在後臺執行的cli腳本,或者將當前的PHP腳本分叉到後臺並在那裏進行郵件發送。 –

回答

0

這是一個不錯的方法。只需保持腳本簡單,測試並記錄任何錯誤。最糟糕的情況是你的腳本佔用太多,所以你可以同時運行很多腳本。

另一種方法是寫一個守護進程,在這裏你可以找到一個博客條目(更新聲明)http://kvz.io/blog/2009/01/09/create-daemons-in-php/

0

我會處理這個具有你所需要的電子郵件給送倒入數據庫。

讓cron每隔一段時間運行一次併發送xx電子郵件。如果你在共享服務器上,你可能對每小時發送的電子郵件數量有限制(即使他們不告訴你)。詢問他們,然後相應地計劃。您可能每小時只能發送100封電子郵件,並且實際上會將其發送出去。你的腳本可能會嘗試併發送更多,但他們不會去!

每5分鐘或10分鐘對未發送的電子郵件進行cron檢查不會是性能問題。