2011-11-15 5 views
0

なぜ2つの並列呼び出しが同時に処理されないのですか?同じブラウザからPHP/Apacheへの同時呼び出しはキューに入れられましたか?

echo "Start: ".time(); 
sleep(5); 
echo "<br/>End: ".time(); 

クロムに2つのタブを開き、スクリプトに移動します。結果TAB 1

Start: 1321331382 
End: 1321331387 

から、私はこれを防ぐにはどうすればよいTAB 2

Start: 1321331387 
End: 1321331392 

から(同時に)

結果?


あなたの質問は適切な答えが得られます。

php.iniでsession.auto_start = 1が有効になった解決策は、次のようにしてスクリプトを開始することです:session_write_close();

またはsession.auto_start = 0; php.iniに入れます。

ありがとうございました。

+1

PHPセッションを使用していますか、スクリプトの唯一のコンテンツを投稿したことはありますか? –

+0

奇妙な...別のブラウザから試しましたか?または2つの異なるブラウザかもしれませんか? –

+0

可能な答え:http://stackoverflow.com/questions/1430883/simultaneous-requests-to-php-script – regality

答えて

3

Chromeを使用して複数のタブで同じリソースをリクエストすると、リソースのダウンロードが完了するまで待ちます。その理由は、ヘッダーが許せば、2番目のタブはサーバーからリロードするのではなく、キャッシュからロードされるからです。

これはサーバーの設定とは関係ありませんが、あなたの欠陥のあるテスト方法と関連しています。コマンドラインからwgetという2つの呼び出しを呼び出すと、これは期待どおりに動作します。

FiddlerなどのデバッグプロキシまたはWiresharkなどのパケットスニッフィングソフトウェアを使用して、これが起こっていることを確認することもできます。

+0

私がlocalhost/x.phpとlocalhost/y.phpを呼び出すと、同じキューイングの問題が発生します。 (x.phpとy.phpは同じスクリプトを持っています)y.phpは同じスクリプトではないのでキャッシュを待つべきではありません。私は理解していません – Benjamin

+0

@ベンジャミン、まず、 'wget'やFiddlerでテストします。そこで動作を確認できたら、2つの異なるスクリプトにアクセスしていることを指定して(そしてテストした方法を説明する)、あなたの投稿を編集し、Apacheの設定ファイルを投稿してください。 – Brad

0

あなたのApache設定は何ですか?複数のサーバーではなく1台のサーバーを実行するように設定することも可能です。したがって、それがそのように設定されていれば、同時に実行することは不可能です。

関連する問題