The process will continue to run in Apache, but this is a portable solution you can kick off easily with an AJAX request from a browser if you want.
http://quickshiftin.com/blog/2011/04/non-blocking-web-service-processing-in-php/
<?php
// this script can run forever
set_time_limit(0);
// tell the client the request has finished processing
header('Location: index.php'); // redirect (optional)
header('Status: 200'); // status code
header('Connection: close'); // disconnect
// clear ob stack
@ob_end_clean();
// continue processing once client disconnects
ignore_user_abort();
ob_start();
/* ------------------------------------------*/
/* Message you'll send to client goes here ..*/
/* ------------------------------------------*/
$iSize = ob_get_length();
header("Content-Length: $iSize");
// if the session needs to be closed, persist it
// before closing the connection to avoid race
// conditions in the case of a redirect above
session_write_close();
// send the response payload to the client
@ob_end_flush();
flush();
/* ------------------------------------------*/
/* PHP Excel Job goes here ... */