私は、注文をPHPスクリプトにajaxでサブミットする小さな注文アプリケーションを持っています。 PHPスクリプトが注文を受け取ってデータベースに格納すると、「OK」メッセージがクライアントに送り返され、確認メールが顧客に送信され、もう1つが私に送信されます。 問題は、クライアントが約15秒間(ブラウザの表示を更新する)「OK」を表示していないことです。私が電子メールを送信するとコメントすると、遅延はありません。PHP mail()関数の遅れ
... write to database
echo "OK";
mail($semail,'Msg Subject',$message, $header, $bounceto);
mail($semail2,'Msg Subject',$mesage, $header, $bounceto);
メッセージはわずか2行です。
質問:メール()関数を呼び出すときに
- がなぜ遅れがあるだろうか?
- PHPスクリプトが完了するのを待たずに「OK」メッセージを送信させるにはどうすればよいですか?私が推測しているいくつかの並べ替えのフラッシュ。
ありがとうございました。おそらく1分の遅れが許容されます。私はちょうどクライアントにバッファをフラッシュすることができますし、PHPのチャグを離れてそれが良いかもしれないことができますか? –
http://php.net/manual/en/function.fastcgi-finish-request.phpでも動作しますが、https://php-fpm.org/ – Mark
が必要です。http://があります。 php.net/register_shutdown_functionメール機能を置くことができます。それでも、私は彼らがハックであり、適切な解決策ではないと考えています。電子メールは決して瞬間ではなかったので、私はまだキューを選ぶだろう。 – Mark