Not a direct answer to your question, but perhaps a possible solution to your problem:
Are the search results of the different sites mixed in one big result?
If not, I would use ajax to load the different sections / results simultaneously, showing the sub-results as soon as they become available.
If you want to mix all sub-results, you could still do the same storing the sub-results in a session and generating your final output when all 20 are known or when a certain time has passed.
This does depend heavily on javascript however...
Edit: jquery example:
Using jquery you can load the different results in different div
's:
javascript
/* start loading results when the document is loaded */
$(document).ready(function() {
$("#results01").load("http://www.mysite.com/page_results_01.php");
$("#results02").load("http://www.mysite.com/page_results_02.php");
...
$("#results20").load("http://www.mysite.com/page_results_20.php");
});
html
<div id="results01">Loading results from page 01 ...</div>
<div id="results02">Loading results from page 02 ...</div>
...
<div id="results20">Loading results from page 20 ...</div>
Emtpy div
's don´t show, so you can get rid of the text if you don´t want it...