[PHP-users 35164] Re: phpのmail関数がたまにfalseを返す
goungoun
gounx2 @ gmail.com
2010年 4月 26日 (月) 17:24:04 JST
こんにちは。
On Mon, 26 Apr 2010 13:29:20 +0900
choice <info @ choice-site.com> wrote:
:
> > $ 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";
> >
> > ?>
> > ---
を実行して、
> 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
EPIPEエラーが発生した。ということは分かりました。
以下について、何ら記述がないので教えてください。、
・mail()sleep(1)を繰り返しつつも、なんとか「PHP>>> end」まで到達した。
・永久にmail()sleep(1)を繰り返し続けた。(endに到達しない)
どちらでしょうか?
(また、後者であるならsleepを10とか20とかにすると、endに到達しませんか?)
子プロセスも追跡してみるとどうなりますか?
$ sudo sh -c "strace -f php ./mailtest.php > trace.log 2>&1"
--
goungoun <gounx2 @ gmail.com>
http://goungoun.dip.jp/app/
PHP-users メーリングリストの案内