|
Posted by Francois Bonzon on 11/17/38 11:40
Any idea how I can launch a background task from a PHP script?
For example, when a user posts on my message board, it may fire many
e-mail notifications to other users, and other tasks. I want the
posting confirmation page to end displaying quickly, without waiting
for those notifications or other tasks to complete.
So basically what I want is to launch 'background.php' from 'main.php',
with the user seeing only the output of - and waiting only for the end
of - 'main.php'. Without the need to wait for the end of the possibly
long 'background.php', like if I had simply included it in 'main.php'.
According to the PHP Manual, the function register_shutdown_function()
was the solution "in PHP 4.0.6 and earlier under Apache", but "since
PHP 4.1 the shutdown functions are called as the part of the request"
so that PHP waits until the shutdown functions are completed before
closing the connection to the user.
E.g. in PHP 4.1+ this
<?php
function background () {
echo 'Starting background task... ';
// Do something long that I don't want the user to see or wait for
sleep(5);
echo 'End of background task. ';
}
echo 'Starting main script... ';
register_shutdown_function('background');
echo 'End of main script. ';
?>
will output:
Starting main script... End of main script. Starting background task...
End of background task.
I want a way to output only:
Starting main script... End of main script.
and do the remaining in background.
Navigation:
[Reply to this message]
|