我正在尋找一個電子郵件庫來建立我們公司內部的通訊系統。 它應該支持消息隊列(向隊列發送郵件,在後臺自動發送郵件)而不會阻塞網絡服務器。 所以我認爲後臺處理應該作爲服務器上的後臺服務運行, 類似於aspmail,但爲PHP。php:尋找支持郵件排隊的電子郵件庫
有什麼建議嗎? 謝謝
我正在尋找一個電子郵件庫來建立我們公司內部的通訊系統。 它應該支持消息隊列(向隊列發送郵件,在後臺自動發送郵件)而不會阻塞網絡服務器。 所以我認爲後臺處理應該作爲服務器上的後臺服務運行, 類似於aspmail,但爲PHP。php:尋找支持郵件排隊的電子郵件庫
有什麼建議嗎? 謝謝
我已經使用PEAR的Mail_Queue一次排隊了200,000多封郵件。即使使用自定義內容,填充數據庫也非常簡單快捷,然後一個相當簡單的腳本可以發送大約250次 - 如果平均負載不太高。然後它循環併發送下一批。它從後臺運行,並且易於設置,以便如果隊列表爲空,則在再次檢查之前暫停片刻(因爲每秒檢查幾次對任何人都沒有幫助)。
同時檢查機器的負載平均值的好處是,它只會在隊列中緊縮而不會出現自創的資源不足的問題。
Mail_Queue tutorial爲您提供了幾乎所有您需要的東西 - 只需循環「send_messages.php」腳本(從命令行更好),直到數據庫隊列爲空,然後暫停一會兒 - 再循環。
我建議使用Gearman建立一個自動守護程序,等待您的Web服務器提交的作業。
有一個好的文章:http://kevin.vanzonneveld.net/techblog/article/create_daemons_in_php/解釋如何創建純PHP代碼的守護進程。
在Web服務器端,你只需創造就業機會(Gearman的客戶端),以及異步排隊他們到的Gearman守護進程。 然後你有你的郵件程序php守護進程等待作業(gearman worker),並在隊列中可用時執行它們。
如果你有一個龐大的郵件量發送,你甚至可以在多臺服務器,將等待在同一Gearman的作業隊列,以優化電子郵件處理部署的工人。
它應該支持消息隊列(向隊列發送郵件,在後臺自動發送郵件)而不會阻塞網絡服務器。所以我認爲後臺處理應該作爲服務的後臺服務運行
WTF?管理隊列是電子郵件系統的工作 - 它的設計設計要做 - 它不是應用程序與它交談的責任。如果您的郵件服務器在您每次發送郵件時都會阻止,則會出現很錯誤。
這聽起來像你正在嘗試寫自己的MTA,而不是固定有什麼不對您當前的規定。
如果您需要提供離線功能,然後安裝在PHP運行的機器上的MTA。
你可以使用redis爲您message queue:
Redis的速度非常快,並積極開發的數據結構的服務器。用redis寫一些東西很容易。爲什麼我喜歡Redis其他消息隊列:
的Redis:
一個開源的,先進的 key-value存儲。因爲 鍵可以包含字符串,散列, 列表,集合和有序集合,所以它通常被稱爲 作爲數據結構服務器。
這是非常強大的。
make
。make
編譯。由於需要什麼的性質,我不認爲這是一個專門爲MTA職責開箱即用的解決方案,但是我可能是錯的。
我已經構建了類似的最近,它涉及將電子郵件發送到一個字段的數據庫隊列,以顯示它是否已發送,然後運行CRON作業來處理髮送腳本的設置批次,發送這些電子郵件,並標記爲發送,沖洗並重復。
有興趣通過電子郵件/ MSN與你聊天,看看你已經爲系統計劃了什麼,因爲我基本上都在做同樣的事情。
+1對於Gearman建議 – 2011-02-07 12:05:53