Redirect Clients While Processing Continues
Friday, October 16th, 2009
Generally, if you need to have the browser see a page while you continue executing the request I would use a queue system like Gearman or Amazon’s SQS. However, in some rare cases running the code in the template requested by the user is just as fast as communicating with a remote queue. For those instances, redirecting the client while processing finishes makes sense.
View Code PHP
<?php // Redirect the client ignore_user_abort(true); set_time_limit(1); ob_start(); header("Location: http://www.example.com/"); header("Connection: close"); header("Content-Length: " . ob_get_length()); while(@ob_end_flush()); flush(); // Continue processing sleep(10); ?> |
An example in action? Adding an entry to a database server on a redirect script. That DB server may be very busy and so take longer than we’d like to respond. Using this redirect code we can ensure the browser bounces to the next page as quickly as possible.