2011-11-15 31 views
0

爲什麼2個併發調用apache2沒有並行處理?來自同一瀏覽器的PHP/Apache併發調用隊列?

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

打開2個標籤爲鍍鉻,並轉到腳本。 (同時)從TAB TAB 1

Start: 1321331382 
End: 1321331387 

結果

結果2

Start: 1321331387 
End: 1321331392 

如何防止這種情況的發生?


您的問題暗示正確的答案。

session.auto_start = 1在php.ini中激活解決方法是啓動腳本: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並在多個選項卡中請求相同的資源時,它將等待資源完成下載。原因是如果頭允許,第二個選項卡將從緩存加載,而不是從服務器重新加載。

這與您的服務器配置無關,但更多與您的有缺陷的測試方法有關。從命令行調用幾個wget調用,這可能會按預期工作。

您還可以使用調試代理(如Fiddler)或數據包嗅探軟件(如Wireshark)驗證是否發生了這種情況。

+0

如果我打電話localhost/x.php AND localhost/y.php,相同的排隊問題發生。 (x.php和y.php具有相同的腳本)y.php不應該等待緩存,因爲不是相同的腳本。我不明白 – Benjamin

+0

@Benjamin,首先,用'wget'和/或Fiddler進行測試。如果你可以確認那裏的行爲,那麼編輯你的帖子,指定你正在訪問兩個不同的腳本(並解釋你如何測試),併發布你的Apache配置文件。 – Brad

0

你的apache設置是什麼?你可能將配置設置爲只運行1臺服務器,而不是多臺服務器。所以如果這樣設定的話就不可能同時運行。