2

添付ファイル付きのメールを送信し、JavaScript (jQuery) でプログレスバーを表示する方法の良い例を知っている人はいますか?

4

1 に答える 1

0

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

PHP にはスレッド化がないため、配信用のデータベース キューを用意し、外部の PHP プロセスをメイン サイトから (または cron 経由で) トリガーして配信を側で処理し、データベースに現在のステータスをマークすることをお勧めします。各配信: NOT_PROCESSED、IN_PROGRESS、CONNECTING、CONNECTED、SENDING_DATA、ACCEPTED、FAILURE_X。Ajax を介して、各配信のステータスについてデータベースにクエリを実行できます。

PHPMailer が標準の PHP mail() 関数を内部的に使用している場合、これはマシンでリレー SMTP サーバーを使用します。ステータスに関する情報はそれほど多くありません (自分でソケットを作成した場合に得られる情報です)。主な状態は 3 つだけです。 NOT_PROCESSED、IN_PROGRESS、FAILURE_X。

配信についてユーザーにフィードバックを与えながら、PHP を使用して非同期的にメールを送信することは可能ですか?

それ以外の場合は、小さなステップごとに進行状況バーを更新できます。このような任意のもの:

  1. メール受信者を設定する
    • プログレスバーを更新 25%
  2. メール送信元アドレスを設定
    • 進行状況バーを 50% 更新
  3. メールヘッダーを設定する
    • プログレスバーを更新 75%
  4. メールを送る
    • プログレスバーを 100% に更新

ただし、これは非常に非効率的です。最終的には、プログレス バーが最初の 3 つ (25%、50%、75%) を非常に高速にジャンプし、さらに 75% で止まってしまうという結果になる可能性があります。 2、2 秒後、完了します。

于 2011-11-11T20:54:08.990 に答える