0

要点:私はこのJavaScriptを持っています:

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とjQueryをJSlibとして使用する必要があるため、これは私が行うことの非常に単純化されたバージョンです。しかし、問題は同じままです。

応答が5秒間隔で返されるのはなぜですか?

4

2 に答える 2

2

PHP内でセッションを使用している場合、セッションファイルのロックが解除されるまで、ロックを保持している前のスクリプトを終了するか、そのスクリプト内で明示的なsession_write_close()を呼び出すまで、連続するリクエストが「保持」されます。これにより、サーバーが一度に1つのリクエストのみを実行しているように見え、問題になる可能性があります。

于 2010-06-16T10:40:48.610 に答える
1

HTTP標準では、サーバーへの同時接続は常に2つしか保証されないと明確に規定されているため、5つのリクエストすべてが同時に処理されることはおそらくありません(ただし、ほとんどのブラウザには上限があります。 4-8接続)。1より大きい制限に達した場合、これはボトルネックである可能性があります。

于 2010-06-16T10:44:07.303 に答える