質問があります:
JS側でajaxを使用しており、実行は非同期です。
xmlhttp.readyState == 4と判断されると、サーバーから返された一部のデータが処理され、プロンプトが表示されます。与えられた。
問題は次のとおりです:
最近、サーバーから返されたデータをキャプチャするために常に長い時間待機する必要があることがわかりました。
トレースした後、PHP が MAIL 関数を処理するときに長時間待機していることがわかりました。 MAIL 関数は、非常に単純な電子メール送信を処理するだけです。
これまでにこの問題が発生したことはありません。サーバーに問題がある可能性があります。
詳細な探索は MAIL 関数の実行を待機する必要があり、これによりサーバーが戻るまで待機することになります。
解決策はありますか? MAIL 関数は、AJAX がバックグラウンドを呼び出すときに実行する必要があります。
PHP はマルチスレッドをサポートしていません。メール関数の操作を分離するか、メール関数が実行する必要があるものを一時テーブルに入れて定期的に送信することができます。
これはマルチスレッドとは関係ありませんね?ただ、ここ 2 日間、サーバーの MAIL 関数の応答が少し遅れているようです (実際にはメールは送信されています)。LINUX の MAIL 関数が使用されているため、この問題が発生しています。
あなたの質問はとても奇妙です!
メールの返信を待つ必要があるので、どうすればそれを回避できますか?
メール関数が結果を返すのを待たなければならない場合、それを回避することはできません
あなたの質問は非常に奇妙です。
メールの返信を待つ必要があるので、どうすればそれを回避できますか?
なんと言うか、私が帰りを待つと言ったのは、帰りを待たなければならないということではありません!
AJAXの非同期メソッドによると、サーバーが完全に戻った場合にのみxmlhttp.responseTextが返されますよね?
クライアントが mail() 関数を実行した後、この関数が TRUE か OR を返すのを待っているので、そんなに遅いのでしょうか。
このステートメントを削除すると、他のすべてが正常に実行できるようになり、xmlhttp.responseText の値もすぐに取得できるようになります。
それでは、MAIL ステートメントを削除せずに、通常かつ迅速に応答する方法はあるのでしょうか?
メールはメールの送信に関連しています。まずメールサーバーの設定を確認してください(専門家を探してください)。
または、コードを最適化し、送信したいメールを一時テーブルに置き、Linux に crontab を追加して、メール機能を使用して定期的に送信することもできます。
メールの返信を待つ必要がないので、nowphp で受信するという考えに従ってください
もちろん、メールが送信されたかどうかは時間内にはわかりません
はずですメールサーバーに問題がある可能性があります。