2011-11-11 6 views

答えて

0

おそらく、それに基づいてプログレスバーを更新するのにかかる時間を推測する必要があります。

側の配達を処理PHPはスレッドを持っていないことを、私は配達のためのデータベースのキューを持つ示唆し、メインのサイト(またはcronを経由)からトリガ外部のPHPのプロセスを持っているでしょう考える

、マーキングNOT_PROCESSED、IN_PROGRESS、CONNECTING、CONNECTED、SENDING_DATA、ACCEPTED、FAILURE_Xの各配信に関する現在のステータスをデータベースに保存します。 Ajaxを使用して、各配信時のステータスをデータベースに問い合せることができます。

phpmailerのは、内部標準のPHPメールあなたのマシンにリレーSMTPサーバを使用しています ()関数を使用している場合、あなたは(あなたが ソケットを自分で作成した場合、あなたが持っているでしょう)状態についてその 多くの情報を持つことができません、 NOT_PROCESSED、 IN_PROGRESS、FAILURE_Xの3つの主要な状態のみを持つことができます。

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

そうしないと多分あなたは、それぞれ少しステップの後に、プログレスバーを更新することができます。このような任意の何か:

  1. 設定メール受信者
    • 更新プログレスバー25%
  2. セットメールアドレス から
    • 更新の進捗バーが50%
  3. メールヘッダーを設定する
    • 更新プログレスバー75%
  4. 送るメール
    • 更新プログレスバー100%

これは、しかし、実際には非効率的な..ですそして、最後の結果おそらく最初の3つ(25%、50%、75%)で進歩バーが本当に速くジャンプしていることをユーザーが見ているでしょうし、余分な秒または2分間75%完了...