私はいくつかの問題を引き起こし、一般的に信頼性が高くない信頼できるメールシステムを構築しようとしています。大規模なリクエストにcURLを使用する
私は現在、PEAR mail_queueを使用してMySQLデータベースに送信するメールと、PEARとcronジョブを使用してメールを送信するためのメールを追加するために、いくつかのPHPスクリプトを設定した専用サーバーを用意しています。これはすべてうまくいく。
私は苦労しているビットは、ニュースレターが送られているサイトを停止せずにデータベースを埋めることです。
ニュースレターは、共有サーバーで保持されているサイトのバックエンドの管理パネルからセットアップされ送信されます。ニュースレターの送信ボタンがクリックされると、cURLリクエストが専用サーバーに送信され、データベースに入力されます。しかし、600人以上の購読者がいるニュースレターを送付すると、サイト全体が停止し、処理が完了するまで返されません。
バックグラウンドで実行するか、非同期的に実行できるcURLやその他の要求をセットアップするにはどうすればよいですか?これが実行さ
$hCurl = curl_init();
$curl_options = array(CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_URL => "http://DOMAIN/PATH/SCRIPT", CURLOPT_POSTFIELDS => "VARIABLE TO SEND");
curl_setopt_array($hCurl, $curl_options);
$sResp = curl_exec($hCurl);
curl_close($hCurl);
スクリプトは、有効な電子メールをしていると、ステータスと無効なメールを返すチェックした後mail_queueに加入者を追加します。
はここにいくつかのコードです。 MySQLデータベースに600以上の電子メールを追加するのは、これが大変な作業です。
ご協力いただければ幸いです。
このcURL要求は、メールを送信するリモートスクリプトを開始することになっていますか?とにかく、cURL関数はそれ自身がバックグラウンドプロセスを開始できません。あなたは無人側の仕事を開始するために 'exec(" nohup curl http:// www /& ")'のようなもので運がよいかもしれません。応答のために – mario
ありがとうございます。 cURL要求はdbにメールを送信して送信することです。メールはcronジョブを使用して間隔をあけて送信され、問題の一部であったsmtpサーバーの負荷を軽減します。私はバックグラウンドプロセスに役立つかどうかを調べるためにexec()を調べる必要があります。 – andyface