[PHP-users 35809] Re: PHPバックグラウンド動作&リダイレクトについて
naoaki
nao @ star-project.net
2014年 6月 6日 (金) 01:31:40 JST
こんにちは。
過去に似たような事をしたことあります。(メール送信処理ではありませんでしたが)
その際は、JavaScriptが使えない状況だったので、cURL関数使いました。
今回のを例に取るなら以下の様な感じになります。
・メールの送信プログラムはPOSTでFROMやTOやデータBODYを受け取るようにしておく
・同一サーバーに設置しておく(http://localhost/exec/send.php とか)
・WEBページからそのプログラムへcurl関数をつかって、マルチスレッドでPOSTする
完全に同時に1000POSTするのがアレでしたら、例えば250ずつとかって区切ってあげるとか。
1000回をシリアライズして処理するより、4分の1の時間で完了するかと思います。
2014年6月5日 17:28 沓掛紳也 <kutsukake @ imgnation.co.jp>:
> はじめまして
> PHPの動作で質問したいことがありましてメールいたします。
> よろしくお願いします
>
>
> 以下の操作を行いたいと考えております。
>
> ・1000件のメール送信
> ・FORMのactionはsend.php
> ・send.phpが読まれると即ブラウザはresult.phpへ遷移する。
> ・ブラウザは遷移してもバックグラウンドでメールが送信されている
> ・WindowsサーバーとLINUXサーバー双方で動作させたいので、execなどのシステム関数は使用できない
>
> 下記のURLを参照して
> http://xoops.hypweb.net/modules/UsersWiki/person/nao-pon/blog/2006-11-17
>
> 以下のようにコーディングしたのですがメール送信が完了した後でないとブラウザの画面が遷移しませんでした。
>
> 原因又は対策等お分かりになる方いらっしゃいましたらお教えいただけたらと思います。
> よろしくお願いします。
>
> ------------パターン1---------------------------------------
> // ブラウザとのコネクションが切れても実行し続ける
> ignore_user_abort(TRUE);
>
> // ブラウザにはリダイレクトを通知
> $location_url = 'http://yahoo.co.jp';
> while($i=ob_get_level()){
> ob_end_clean();
> }
>
> $out = "\r\n";
> header("Content-Length: ".strlen($out));
> header("Connection: close");
> header("Location: " . $location_url);
> echo $out;
>
> @ob_flush();
> @flush();
>
> //メール送信
> $Mail->sendP();
>
> ------------パターン2---------------------------------------
> // ブラウザとのコネクションが切れても実行し続ける
> ignore_user_abort(TRUE);
>
> // ブラウザにはリダイレクトを通知
> $location_url = 'http://yahoo.co.jp';
> while($i=ob_get_level()){
> ob_end_clean();
> }
>
> ?>
> <SCRIPT type="text/javascript">
> <!--
> setTimeout("link()", 0);
> function link(){
> //location.href='http://www.onlineconsultant.jp/';
> location.href = '<?php
> printf("%suser/mailendregist.php?created=%d&birthyear=%d",$Common->RootUrlAdmin[0],$User->request["created"],$User->request["birthyear"]);
> ?>';
> }
> -->
> <?php
> @ob_flush();
> @flush();
>
> //メール送信
> $Mail->sendP();
> _______________________________________________
> PHP-users mailing list PHP-users @ php.gr.jp
> http://ml.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://oldwww.php.gr.jp/php/novice.php3
PHP-users メーリングリストの案内