ホームページ >バックエンド開発 >PHPチュートリアル >php_PHP チュートリアルでのメールの非同期送信に関する問題

php_PHP チュートリアルでのメールの非同期送信に関する問題

WBOY
WBOYオリジナル
2016-07-13 10:15:501342ブラウズ

phpでのメールの非同期送信に関する問題

要件:

特定のシステムでは、製品のパッチファイルをアップロードしたり、製品のアップデート情報を公開したりした後、製品を使用するユーザー(多数のユーザー)にメールを送信する必要があります。送信後、送信完了のメッセージが表示されます。 !

一般的に使用される PHP コードの記述方法は次のとおりです:

リーリー

今回は100通のメールが送信されたとします。この作戦の結果はどうなるでしょうか?

ユーザー エクスペリエンス: ユーザーは待機します -> メールの送信が完了します -> 情報を返します (この間にスクリプトの実行がタイムアウトになる可能性が非常に高くなります)

この操作では大量のメールを送信する必要があるため、PHP の実行時間が長すぎてユーザーは待ち遠しくなります。 Apache または nginx が許容実行時間を超えて待機すると、タイムアウト エラーが返されます。現時点では、ユーザーには操作が成功したかどうか、また送信されたメールの数はわかりません。

このことから、上記のコードのユーザー エクスペリエンスは非常に悪く、タスクを正常に完了できないことがわかります。

それでは、このユーザーエクスペリエンスの低下の問題をどのように解決すればよいでしょうか?

ここで非同期実行という概念について説明します

ユーザーエクスペリエンス: ユーザーは待つ -> 送信完了

友達は、なぜ送信リンクがないのかと尋ねるでしょう。

送信プロセスでは、ユーザーがリクエストを送信すると、送信タスクは送信を個別に処理する PHP プログラムに転送されます。ユーザーに「送信完了」と表示された時点では、レターはまだ送信されていません。 -送信プログラムはバックグラウンドで懸命に動作し、文字を 1 つずつ送信します。

<?php
// ......
//查找出所有使用该产品的用户email地址,假设存放在$email数组中  
for($i=0;$i<count($email);$i++){
   sendemail();
}
function sendemail(){
    //发送邮件代码  
}
//......

興味がありそうな記事

  • phpでのファイルの同時読み取りと書き込みの競合の問題を解決する方法
  • phpメール送信コンポーネント
  • PHPのGZip圧縮機能を使用してWebサイトのJSおよびCSSファイルを圧縮し、Webサイトへのアクセスを高速化します
  • 高負荷を実現するには、トラフィックの多い Web サイトでサーバーの最適化、静的化、データベースの最適化、負荷分散をどのように実装すればよいでしょうか?
  • JavaScript は左右の高さの調整の問題を解決します
  • PHP は関数 urlencode( を使用して URL エンコードの問題を解決します) )、urldecode()、rawurlencode ()、rawurldecode()
  • プログラムのパフォーマンスを最適化するために、PHP 関数memory_get_usage を使用して現在の PHP メモリ消費量を取得します
  • メールの送信 SMTP エラー SMTP ホストに接続できませんでした 送信失敗の解決策。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/901423.html技術記事 phpでメールを非同期送信する場合の問題点と要件: あるシステムでは、製品のパッチファイルをアップロードしたり、製品の更新情報を公開したりした後、その製品を使用しているユーザー(多数のユーザー...)にパッチファイルを送信する必要があります。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。