2011-08-22 139 views
0

我一直在寫一些涉及使用mail()的PHP頁面。大多數情況下,它運作良好。然而,偶爾(我會說約10-20%的時間),mail()函數會導致頁面加載異常緩慢,如果有的話。PHP郵件()函數導致頁面加載速度緩慢

我在任何論壇上都找不到類似的問題。僅僅重申一下,mail()函數可以正常工作併發送郵件,但是當使用mail()函數調用腳本時,它偶爾會導致頁面加載時間延遲。

以下是頁面外觀的重要部分。並記錄在案,我們使用的是Microsoft Exchange Server 2007的

<html> 
    <head> 
    <?php 
     if ($_POST['submit'] == 'submit'){ 
     //execute some php code. 
     mail($to, $subj, $body, $headers, "O DeliveryMode=b"); 
     } 
     ?> 
     <meta http-equiv="refresh" content="0"> 
     <?php 
    } 
    </head> 

    <body> 
    <form action=<?php echo $_SERVER['PHP-SELF']?>> 
     <!--Form Data--> 
     <input type='submit' name='submit' value='submit'/> 
    </form> 
    </body> 
</html> 

回答

0

這樣做有幾個選項:使用AJAX,或將emais在隊列中,並運行一個cron運行腳本以異步方式發送。

+0

我也想過實現一個隊列並使用cron,但有deliberymode參數應該工作排隊郵件... – Pons

0

正如johndavidjohn指出的那樣,緩慢是由與郵件服務器的通信引起的。直到電子郵件發送並關閉連接,頁面纔會完成加載。

我建議將消息​​保存在數據庫中,然後使用cronjob從數據庫中提取消息併發送電子郵件。這將減輕發送電子郵件到後臺進程的工作量。

如果您不能運行一個cronjob,你可能能夠獲得使用郵件傳送服務更好的響應時間像PostmarkSendgrid,或Amazon SES