2010年4月26日

[PHP-users 35160] Re:phpのmail関数がたまにfalseを返す

中出です。

レス、ありがとうございます。
また丁寧な説明、ありがとうございます。

>
> $ vi mailtest.php
> (送信先、ループ回数は適当に変更ください)

> ---
> <?php
> ini_set('error_reporting', E_ALL);
> ini_set('display_errors', 1);
> ini_set('log_errors', 1);
>
> echo 'PHP>>> PHP Version : ' . phpversion() . "\n";
> echo 'PHP>>> sendmail_path : ' . ini_get('sendmail_path') . "\n";
>
> echo "PHP>>> start\n";
> for ($cnt = 1; $cnt < 10; $cnt ++){
> while (1) {
> $ret = mail('root','subject','body');
> echo 'PHP>>> cnt : ' . $cnt . ' ret : ' . $ret . "\n";
> if ($ret === TRUE) {
> break;
> }
> sleep(1);
> }
> }
> echo "PHP>>> end\n";
>
> ?>
> ---
>

> システムコールのログをとるなら。
> $ strace php ./mailtest.php > trace.log 2>&1
>
> 大量のログを吐くと思いますが「PHP>>>」で検索すれば、
> どこで何をやってるか追えると思います。
> (見ても意味不明かもしれませんが、成功するときと、
> 失敗するときの差異から原因を推測できるかもしれません)
>

教えていただいた処理を実行したところ、エラーが発生した際の
ログは以下のような感じになっていました。

fstat64(4, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7c4d000
write(4, "To: root\nSubject: subject\n\nbody\n", 32) = -1 EPIPE (Broken pipe)
--- SIGPIPE (Broken pipe) @ 0 (0) ---
close(4) = 0
waitpid(19296, [{WIFSIGNALED(s) && WTERMSIG(s) == SIGSEGV}], 0) = 19296
munmap(0xb7c4d000, 4096) = 0
write(1, "PHP>>> cnt : 7115 ret : \n", 25PHP>>> cnt : 7115 ret :
) = 25
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigaction(SIGCHLD, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
nanosleep({1, 0}, {1, 0}) = 0
pipe([3, 4]) = 0
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0xb7f39728) = 19298
close(3) = 0


何が原因で、EPIPE (Broken pipe)のようなのが出るのか
わからないのですが、これが理由でmail関数が失敗している
ということですね。

phpの話題から外れますので、
google等で調査を続けたいと思います。

以上、ありがとうございました。

----

_______________________________________________
PHP-users mailing list PHP-users@xxxxx
http://ml.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://oldwww.php.gr.jp/php/novice.php3


投稿者 xml-rpc : 2010年4月26日 13:29
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/95495
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。