現在、PHP 4.3.9(cgi)とpostfixを使っています。
XMLの複数出力処理で3分~5分くらいの後に完了画面に遷移して
メールを飛ばしているのですが、xml出力処理を行わない場合は
メールが送信されます。
送信されない時の戻り値はfalseとなっていますので、mb_send_mail
が動いていないみたいです。(引数は同じです)
一定の時間が経つとsendmailに渡してくれないといった
設定などがあるのでしょうか。
それともメモリやCPUといったものが関係しているのでしょうか。
宜しくお願い致します。
コメント欄が使えないので、質問欄に書かせていただきます。
XMLの複数出力処理で3分~5分くらいの後に完了画面に遷移して
メールを飛ばしているのですが、xml出力処理を行わない場合は
メールが送信されます。
よく意味が分からないので、もっと詳しくお願いします。
送信されない時の戻り値はfalseとなっていますので、mb_send_mail
が動いていないみたいです。(引数は同じです)
false が取れているのなら、mb_send_mail 自体は動いているのでしょう。
おそらく、Postfix のログにエラー原因が書かれているでしょうから、そちらを提示してみて下さい。
XML作成に時間がかかります。(3分から5分程度)
DB更新後、メールを飛ばします。
その際、数レコードの場合は特に問題なくメールが飛ぶのですが
時間がかかるとメールがとびません。
CGI として動作させ、ブラウザ等からアクセスしていると見ていいですね?
Apache のタイムアウトがデフォルトで5分だったと思うので、それで終了してしまっているのかもしれません。
エラーログも見てみてください。
エラーログで見落としていましたが、
mb_send_mail():Could not execute mail delivery program '/usr/sbin/sendmail -t -i
とありました。
CGIとして動作してはいないと思います。
あれは/usr/bin/phpと上で記述して行うものですよね。。
(cgiは使ってないのでcgi上から呼び出してはいません。
ちょっと詳しくないの適当ですいません。。。)
php.iniの設定ファイルを見たのですが
max_execution_timeが120となっていたので
これの可能性があるのかなと思ってます。
apacheのtimeoutも120となっていましたので
両方を直せばいけるような気がしてきました。。。
テストで直せればいいのですが、稼働中のサーバなので
試してはいません。
宜しくお願い致します。
早速のご回答ありがとうございました!
説明になってなくてすいません。。。
PHPの動きとしては、ある条件のレコードをsqlで取得して
1レコードごとにその内容を色々なXMLの形で吐き出しています。
その後DBの更新をしています。
XML出力しなくてもよい場合はDB更新のみというものです。
XML出力する場合に、条件にあうレコード数が多い場合は
XML作成に時間がかかります。(3分から5分程度)
DB更新後、メールを飛ばします。
その際、数レコードの場合は特に問題なくメールが飛ぶのですが
時間がかかるとメールがとびません。
maillogをみても特にエラーになっていませんでした。
それで戻り値を表示させたところ空になっていました。
maillogには以下のような文がありました。
postfix/anvil[20339]:statistics: max connection rate 1/60s
postfix/anvil[20339]: statistics: max connection count 1
postfix/anvil[20339]: statistics: max cache size 1
以上宜しくお願い致します。