Hi there,
I am trying to get a script to run in background no matter what, but I am
obviously doing it wrong.
Here is the entire code:
<?php
//first instruction to be sure it is parsed
ignore_user_abort(TRUE);
set_time_limit(3600);
//sleep(10);
//this will send the HTTP code + headers + test
ob_start();
echo "test";
ob_flush();
sleep(10);
system("touch /tmp/aborting");
?>
The file /tmp/aborting get touched if I abort the connection in a
browser, or if I run "wget blabla/script.php" and kill wget... in fact it
works perfectly in any way, but it doesn't work when I use the "--spider"
option of wget.
That option does a HEAD request and as soon as it receives the HTTP code
200 closes the connection. The script is then aborted and the file
/tmp/aborting never get touched.
I initially thought that ignore_user_abort() never get to be parsed
because the connection is closed before and I set it in the php.ini file,
but that didn't work.
I then realized that PHP has to get at least to the ob_flush() call,
that's proved by putting a sleep(10) just before the ob_start() call:
wget --spider waits 10 seconds before exiting.
Why is ignore_user_abort(TRUE) ignored, what am I missing?
I probably shouldn't say that while asking for help, but... is this a bug?
I am using PHP 5.2.6-pl7-gentoo via Apache 2.2.9-r1 (Gentoo) with
"worker" MPM.
Thank you for your help,
tillo
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php