[PHP-users 35807] PHPバックグラウンド動作&リダイレクトについて

沓掛紳也 kutsukake @ imgnation.co.jp
2014年 6月 5日 (木) 17:28:26 JST


はじめまして
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 メーリングリストの案内