Take a look at this article. Depending on what you're doing this can be much better than a CRON job, most specifically, if you want to take action immediately. CRON jobs are limited to running at most, once per minute, with this approach, you can begin handling the request in the background immediately.
// 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();
/* ------------------------------------------*/
/* this is where regular request code goes.. */
/* end where regular request code runs.. */
/* ------------------------------------------*/
$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();
/* -------------------------------------------*/
/* code here runs after the client disconnect */