現在、mod_perlを使ってサイトを構築しているのですが、その中で、sendmailを使ってメールを送信している処理が遅く困っています。
その処理が遅いため、画面へのHTML出力が遅くなっています。(HTML出力処理は、メール送信処理よりさきにやっているのですが・・)
下記は、ソースの該当部分です。
直接、sendmailに渡しているのですが、
この処理がいけないのでしょうか?
何か改善方法があるようであれば教えてください。
ちなみに、通常のCGIだとforkで、別プロセスを立てて
そのプロセスにメール送信をさせて、主プロセスは、HTML出力をさせることはできると思うのですが。
プロセスが常駐しているmod_perlでは、有効な手なのでしょうか。
--------------------------------------
open(SENDMAIL,"|/usr/lib/sendmail -t") or $err = 1;
if ($err == 0) {
print SENDMAIL $mail_body;
close(SENDMAIL);
$err_msg = "メール送信正常に処理しました。\n";
} else {
$err_msg = "メール送信エラー:ticket_cd:$$ref{ticket_cd}\n";
}
--------------------------------------
No.1ベストアンサー
- 回答日時:
>その処理が遅いため、画面へのHTML出力が遅くなっています。
>(HTML出力処理は、メール送信処理よりさきにやっているのですが・・)
HTML出力後、バッファのクリアは行っていますか?
>forkで、別プロセスを立てて
>そのプロセスにメール送信をさせて、主プロセスは、HTML出力をさせることはできると思うのですが。
>プロセスが常駐しているmod_perlでは、有効な手なのでしょうか。
forkはmod_perl環境下でも有効なはずですが、それよりはさっさとstdoutをcloseしてしまったほうが良いと思います。
(複数通送るならforkの方が良いですが)
$|=1;print "\n";close (STDOUT);
#もちろん、これ以降はstdoutへの出力はできません。
zebedeerさんが書かれた内容で、困っていた問題が解決しました。有難う御座います。
ところで、zebedeerさんは、システム開発の経験はどの程度おありなのでしょうか?
今、私個人で開発しているシステムがあり、宜しければ手伝ってほしいのですが。
謝礼は、システム稼動後の成果に応じた形で差し上げたいと思います。
ご自身の仕事等が忙しいようであれば、この申し出は無視して頂いて差し支えありません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- UNIX・Linux iptablesを設定するとメール送信処理が遅くなる!? 6 2022/06/07 01:11
- CGI -T(汚染モード)でメールが送れません 1 2022/06/12 14:11
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
- UNIX・Linux Ubuntuサーバーでメールを受信できない 7 2022/08/23 20:55
- Visual Basic(VBA) VBAにてメール作成した際、一部指定箇所のみ赤文字にしたいです。 下記の内容ですと作成されたメール本 1 2022/04/27 13:31
- au(KDDI) AUメールが受信できなくなった件 1 2022/08/16 10:35
- ガラケー・PHS SMSメールの受信遅延原因はガラケー自体の欠陥では 8 2022/08/06 11:46
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Outlook(アウトルック) メール送信できない 3 2022/07/20 09:07
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
至急お願いします。C言語で.img...
-
awkスクリプトでダブルクォーテ...
-
教えて!perlから.exeファイル...
-
DOSコマンドで、標準出力を出力...
-
アルファベット、数字を読み込...
-
sprintfについて
-
Perlでファイルの末尾から指定...
-
Perlからchasenの使い方
-
ドメインからIPアドレスあるい...
-
Perl<->Oracle間での文字化けに...
-
VBAでCSVファイルを途中行まで...
-
バッチファイルの作り方(CSV→...
-
close()で例外が投げられる理由
-
batファイルでrenameができませ...
-
VBAでCSVファイルの特定行を書...
-
openした後、closeしないでプロ...
-
VBAコードを張り付け後のエクセ...
-
ListBoxのデータを高速でファイ...
-
JavaでCSVファイルを高速に読む...
-
タブの色を変更する方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
awkスクリプトでダブルクォーテ...
-
DOSコマンドで、標準出力を出力...
-
エクセルVBAで素数だけを出力す...
-
教えて!perlから.exeファイル...
-
sprintfについて
-
Perlでファイルの末尾から指定...
-
CGIから外部コマンド実行時の標...
-
重複するデータを抽出できる秀...
-
ファイル出力の改行コードをLFに
-
timeコマンドの結果をテキスト...
-
sprintfで10進数を桁数指定で16...
-
log2の「正確な」計算方法
-
機器のI/OをArduinoでSDに記録...
-
Perl<->Oracle間での文字化けに...
-
Perl中で teeを使っても戻り値...
-
テキストファイルから日本語部...
-
バッチファイルで、記号を含む...
-
htmlから、ファイル、もしくはC...
-
perlでの出力先設定
-
標準エラーと標準出力をファイ...
おすすめ情報