2016-02-06 46 views
0

我的應用程序(web)中有一個「電子郵件發送」。用戶發送他的姓名,電子郵件,主題和一些文本,然後我發回一封電子郵件給他(與phpmailer)。這需要10個secons(整個過程),但提交信息的驗證(和響應)僅需2秒(使用ajax)。Deamon,Threads o我需要使用的php

¿即使用戶刷新頁面,我如何在2秒內響應並讓服務器發送電子郵件(8秒)?

我說英語很糟糕,對不起。

+0

你可能會尋找PCNTL:http://stackoverflow.com/questions/10871293/how-does-pcntl-fork-work- in-php –

+0

最簡單的解決方案是通過phps'ignore_user_abort()'簡單地從客戶端請求中分離出來。然後,您可以花費所有時間完成請求,與用戶的操作無關。 – arkascha

+0

@arkascha需要在2秒內回覆。感謝您的評論。 –

回答

0

最好的解決方案是使用異步過程。

用戶的請求只會將數據發佈到某種消息隊列中。 (亞馬遜SQS,RabbitMQ)。

在隊列的另一端,您將始終運行守護進程。該守護進程將使用隊列中的消息併發送電子郵件。它也可以在多個實例中運行以提高性能。尼斯的方式,讓這個守護進程的活是主管(http://supervisord.org/

/--- sender Producer ----->queue---- sender \--- sender \-- sender