大量の電子メールを処理し、渡されたパラメータに従ってそれらのコンテンツを解析するための一連の一括メール送信クラスを作成しました。データベースからの1000のランダムな受信者と1000のランダムな送信者で電子メールをテストすると、スクリプトがsend()部分に到達するまで(今はコメントしました)、約2秒のパフォーマンスと20MBのピークメモリが得られます。 、それは素晴らしいです。
ただし、送信部分のコメントを外すと、送信に30秒かかります。これは受け入れられないことであり、私はそれを何とかスピードアップしたいと思います。テストから明らかなように、遅延は$ mail-> send()呼び出しに他なりません。まるで、ループを続行して次の電子メールを送信する前に、何かが返されるのを待っているかのようです。
私が疑問に思っているのは、send()呼び出しを高速化するにはどうすればよいですか?それを速くするために私は何ができますか?2つの送信方法を使用してみました。
- Zend SMTPトランスポート、サーバーに直接接続して送信するだけです。これには、1000通の電子メールにつき30秒かかります。
- Zend_Mail経由でSendmail。各メールを準備した後、Zend_Mailの送信関数を呼び出すだけです。これには60秒かかります。
キューイングは間違いなくオプションであり、クラスに組み込んでいることに注意してください。必要なのはcronをアクティブ化することだけで、それは魅力のように機能します。しかし、実際の送信とそれを高速化する方法について疑問に思っています。したがって、実際のsend()呼び出し。