2011-11-11 41 views

回答

0

您可能需要猜測所花費的時間並根據該時間更新進度欄。

由於PHP沒有線程,我會建議具有交付數據庫隊列,並有一個外部的PHP過程與處理一側的交付主網站(或通過cron)觸發,標記在數據庫上顯示每次交付的當前狀態:NOT_PROCESSED,IN_PROGRESS,CONNECTING,CONNECTED,SENDING_DATA,ACCEPTED,FAILURE_X。您可以通過Ajax查詢數據庫中每次交付的狀態。

如果PHPMailer的內部使用標準的PHP mail()函數,它 使用中繼SMTP服務器在你的機器,你不能有關於狀態,許多 信息(如果你創建了 插座自己,你將不得不)你可以只有三個主要狀態NOT_PROCESSED, IN_PROGRESS,FAILURE_X。

Is it possible to send mail asycronously using PHP while giving user feedback on delivery?

否則也許你可以更新每個小步驟後的進度條。一些任意這樣的:

  1. 設置郵件收件人
    • 更新進度條25%
  2. 從地址設置郵件
    • 更新進度條50%
  3. 設置郵件標題
    • 更新進度條75%
  4. 發送郵件
    • 更新進度條到100%

然而,這真的是低效的。而最終的結果可能會有用戶看到進度條在前三個(25%,50%,75%)中非常快地跳躍,然後在75%的額外一秒或兩秒內卡住,然後成爲完成..