[PHP-users 8427] 持続処理について
Eiji Nakamura
php-users@php.gr.jp
Fri, 5 Jul 2002 15:28:33 +0900
中村と申します。
持続処理について質問させてください。
環境は、RedHat7.2J+Apache1.3.26+PHP4.0.6です。
ignore_user_abortをtrueにしてクライアントとの接続が断になった場合でも、
スクリプトを完了させたいのですが、ignore_user_abortをtrueに設定しても、
スクリプトが破棄されてしまっているようなのです。
試しに、下記のようなスクリプトで実験してみたのですが・・・、
ignore_user_abort(true);
for ($i = 0 ; $i < 10 ; $i++)
{
print("$i\n");
flush();
sleep(2);
}
$fp = fopen("./aaa.txt", "w"); //for debug
fputs($fp, "completed!!"); //for debug
fclose($fp); //for debug
ダウンロード終了まで待つと当然ファイルに書き込まれるのですが、
ダウンロードの最中に”中止”ボタンを押して、相当(上記だと20秒程度)待って
ファイルの存在を確認しても、
そこにはファイルが見当たらないのです。
register_shutdown_functionも試して見ました。
function q()
{
$fp = fopen("./bbb.txt", "w"); //for debug
fputs($fp, "aborted!!"); //for debug
fclose($fp); //for debug
}
register_shutdown_function("q");
for ($i = 0 ; $i < 10 ; $i++)
{
print("$i\n");
flush();
sleep(2);
}
$fp = fopen("./aaa.txt", "w"); //for debug
fputs($fp, "completed!!"); //for debug
fclose($fp); //for debug
結果、やはり、ダウンロード終了まで待つと、"aaa.txt"と"bbb.txt"は存在するので
すが、
ダウンロードの最中に”中止”ボタンを押しても、"bbb.txt"は存在しません。
これは何がおかしいのか、それとも持続処理に関する私の完全な勘違いなのか、
おわかりの方がいらっしゃいましたら、ご教授ください。
よろしくお願いいたします。