I often find that running the main processing in a seperate script in the background, then at the end of this 2nd script, e-mailing the results back to the user, is more effective.
Of course this is not always applicable & the above answers are also good options.
If the Problem is speed , perhaps you should post your code & we may be able to offer performance suggestions.
I should really do something about this apathy ... but i just cant be bothered