views:

34

answers:

2

Hello. Straight to the point: I have this javascript:

for(item=1;item<5;item++)
{
    xmlhttp=new XMLHttpRequest();
    xmlhttp.open("GET",'zzz.php', true);
    xmlhttp.send();
}

And in PHP file something like this:

usleep(5);die('ok');

Now the problem is javascript seems to be waiting for each ajax call to be completed before sending another one. So the first response gets back after approx. 5 seconds, next after 10 seconds and so on.

That's a very simplified version of what I do, since the real script involves using cURL in PHP and jQuery as JS lib. But the problem remains the same.

Why do responses come back in 5 second intervals?

+2  A: 

If you are using sessions within your PHP, then successive requests will be "held" until the lock on the session file is release, eithe by termination of the previous script holding the lock, or by an explicit session_write_close() call within that script. This gives the appearance of the server only running a single request at a time, and may be your problem.

Mark Baker
Thank you!That was the problem
itako
+1  A: 

All five requests will probably not be handled at the same time because the HTTP standard specifically says that you are only guaranteed to have two simultaneous connections to the server at any time (most browsers have a higher limit though, so they may try to have about 4-8 connections). If you hit a limit higher than one, then this is a probable bottleneck.

Emil Vikström