1

私は一部のユーザーに通知を送信する必要があるプロジェクトに取り組んでいます.Zend Framework 2 Zend/Mailライブラリでsmtp設定を使用しています. php.ini設定でtlsをオンにしてsslを開きました。

問題は、通知が遅すぎることです。通常、5 人以上のユーザーが同時にアプリケーションを使用すると、タイムアウト エラーが発生します。

任意の構成を使用して、この電子メールをより速く送信できますか?

使用できる設定があれば教えてください。

4

3 に答える 3

1

あえて言うなら、あなたの SMTP サーバーにはかなりの遅延があるに違いありません。SMTP に google を使用しているとのことですが、私はよく知りませんが、それは遠く離れたサーバーになります (ネットワーク上の like や SMTP ボックスに比べて)。その上で、SMTP over SSL を実行しているとします。SSL は、接続が確立される前に多くのハンドシェイクが行われる複雑なプロトコルです。これは、2 つのマシンが SSL ハンドシェイク ダイアログを行うため、サーバーと SMTP サービス間のネットワーク レイテンシが倍増することを意味します。全体として、それは素晴らしい設定ではありません。

ある種のワークキューが役立ちます。したがって、Web に縛られたプロセスはジョブをいくつかのキューに固定するだけで、一部のワーカーはそれに追いつくために最善を尽くします。そのようなものを PHP で実装することもできます (実際のキューイングを提供するために、gearman や beanstalkd のようなものを検討することもできます)。

しかし、別の非常に特殊なオプションがあります。ローカルの sendmail を使用するだけです (UNIX タイプのボックスを使用していると仮定します)。Sendmail (およびさまざまなドロップイン代替 MTA) は、独自のキューを維持します。このようなものは何年も前から存在しており、非常に堅実です。MTA を設定して、現在の SMTP 設定を介してメールを渡すこともできます。

違いは、PHP スクリプトがリモートの SMTP サーバーと通信するのではなく、ローカル サービスと通信するだけで、メールを受信して​​キューに入れ、ほとんど時間がかからないことです。SMTP経由で送信できるようになるまで、メールをキューに保持します。

普通の古いローカル sendmail は、問題を解決するのに大いに役立ちます。Windows サーバーを使用している場合、どのようなオプションがあるかわかりません。少なくとも、SSL 経由ですべてのメールを Google にリレーするように構成できる、実行可能なローカル SMTP サーバーが必要です。

于 2013-04-25T03:33:19.123 に答える
0

自宅で使用している ISP では、実際には電子メールの送信がまったく許可されていないことを知っています。何が機能しなくなったのかを理解するのは、非常に苛立たしい一日でした。最終的に私はそれを追跡し、自宅にいる場合はタイムアウトエラーが発生していることに気付きましたが、オフィスにいる場合は問題なく送信されていました.

于 2013-04-24T13:37:14.850 に答える