2010-06-16 20 views
0

單刀直入前: 我有這個JavaScript:的JavaScript顯然等待每一個AJAX調用在一個循環發送另一個

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

而在PHP文件是這樣的:

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

現在問題是JavaScript似乎在等待每個ajax調用完成後再發送另一個。 所以第一個反應回來後大約。 5秒鐘,接下來10秒鐘之後等等。

這是我所做的一個非常簡化的版本,因爲真正的腳本涉及使用PHP中的cURL和JS庫中的jQuery。但問題依然如故。

爲什麼響應以5秒爲間隔回來?

回答

2

如果您在您的PHP中使用會話,那麼連續請求將被「保留」,直到釋放會話文件的鎖定,通過終止前一個持有鎖的腳本或通過顯式的session_write_close()調用在該腳本中。這使服務器的外觀一次只能運行一個請求,可能是您的問題。

+0

謝謝! 這是問題所在 – itako 2010-06-16 10:51:47

1

所有五個請求可能不會同時處理,因爲HTTP標準明確說明您只能保證有兩個同時連接到服務器的時間(儘管大多數瀏覽器都有更高的限制,所以他們可能會嘗試約4-8個連接)。如果你達到一個以上的限制,那麼這是一個可能的瓶頸。

相關問題