以前ここで同様の質問を見たような気がするのですが、時間がないので、また質問させてください。
プロバイダーのsendmailを使ってメールマガジン送信フォームを作成したのですが、2600件メール送信実験中960件辺りで止まってしまいます。
スクリプトは以下の通りです。
foreach (@mailto) {
$ok_cnt ++;
if (open(MAIL,"| $sendmail -t")) {
print MAIL "FormMailer: HOT-NET BINGO Original Mailer Vs2.00\n";
print MAIL "Reply-to: $master\n";
print MAIL "From: $master\n";
print MAIL "To: $_\n";
print MAIL "Subject: $subject\n";
print MAIL "Content-Transfer-Encoding: 7bit\n";
print MAIL "Content-Type: text/plain; charset=iso-2022-jp\n";
print MAIL "\n\n";
print MAIL "$message\n";
print MAIL "\n";
close(MAIL);
open(TMP,">>$tmpfile");
print TMP "$ok_cnt\t$_\n";
close(TMP);
if (($ok_cnt % 100) == 0) {sleep 5;}
}
当初4~500件位で止まってしまっていたので、
100件送信ごとに5秒のインターバルをおいてみました。
何がダメで止まってしまうのでしょうか?
また、何か良い方法があれば教えていただけませんか?
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
burnさんのおっしゃるように私もhttpのコネクションのタイムアウト
ではないかと思います。
このような場合、forkして子プロセスでメール送信の処理を
行い、親のCGIプログラム側はclose(STDOUT)して、サーバには
処理が終わったかのように振舞うテクニックが有名です。
ちょっと検索してみたら、下記URLのページがforkの書き方について
具体的に書かれていたので紹介します。
なお、forkの仕方がわかったからといってたくさんのsendmailを
同時に呼びまくって…というのは避けたほうがいいでしょう。
OSの設定や、相手のsmtpサーバが重くてぜんぜん返事をしてくれない
状態などによっては、どんどんsmtpのコネクションが増えたりファイル
ハンドルを使い果たしたりプロセステーブルも…というマズい事態も
ありそうですから、いまのように、ひとつのsendmailが終わるまで
closeで待っている方が賢明だと思います。
参考URL:http://www.itboost.co.jp/perl/perl_14.php
No.1
- 回答日時:
特にスクリプトの中身を解析していませんが、CGIの
実行タイムアウトではないでしょうか?
サーバー側の設定に
スリープではなくて、スクリプトを数回に分けて実行するようにしてはどうでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- PHP php 完了画面の送信メールのコードを書いているのですが・・・ 2 2023/06/02 12:01
- Gmail 【お助け!】サーバーからのメール送信でGmailに送信されない問題について 1 2023/06/20 22:03
- PHP phpのメールフォームの完了画面でメール受信のコードを書いています。 1 2023/05/31 11:39
- Visual Basic(VBA) 順列をランダムに発生するプログラム 1 2022/11/16 12:16
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- その他(プログラミング・Web制作) laravel 本番環境でメールが送れません。 1 2023/02/17 17:57
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- 英語 この"e-mail"が複数形でもなく、無冠詞なのはなぜですか? 「表現のための実践ロイヤル英文法」に 1 2022/07/10 16:12
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
htmlからパラメータで、cgiに渡...
-
perl/cgi リダイレクトができない
-
CGI
-
ラジオボタンが両方とも選択で...
-
wordの数式について 定積分を書...
-
SUN BBSの改造方法
-
チェックボックスの返す値
-
perlにおけるセッションIDについて
-
プログラミングについての質問...
-
INPUT TYPE
-
別formのhidden項目を自form値...
-
マップの縦幅
-
入力規則をまとめて定義
-
WEBページを強制的に横画面で見...
-
テキストBOXの縦幅を変えたい
-
Webアプリケーションを作りたい!
-
perlで書いたcgiでsqliteの使い...
-
『数字の3桁毎にカンマを付け...
-
標準入力からデータが読込めない
-
FORMのselectの選択肢を最初か...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
perl/cgi リダイレクトができない
-
htmlからパラメータで、cgiに渡...
-
フォントサイズを変えるには?
-
CGI経由でのPDFファイルをダウ...
-
CGI
-
プログラム実行中の待機ページ...
-
メイルフォームの本文が文字化け
-
Yomi-Searchのカテゴリを縦並び...
-
cgi(perl) sendmailの使い方
-
sendmail 送信先を複数設定す...
-
iis+cgiでmultipart/form-data...
-
<FORM TYPE="subumit">でデータ...
-
サーバー上のPDFにCGIでパスワ...
-
指定のフォルダに指定のファイ...
-
wordの数式について 定積分を書...
-
ラジオボタンが両方とも選択で...
-
select値をhiddenのvalueに渡し...
-
「value」に2つの値をセットす...
-
チェックボックスの返す値
-
INPUT TYPE
おすすめ情報