2015-11-07 117 views
1

我試圖讓兩個php腳本實例同時運行。我有一個劇本,「test.php的」:PHP腳本的多個實例不會在同一個URL中的同一瀏覽器中同時加載

<p><?php echo time(); ?> Sleeping...</p> 
<?php sleep(5); ?> 
<p><?php echo time(); ?> done</p> 

如果我打開兩個瀏覽器標籤頁在同一時間,我得到這個:

1446855680睡覺......

1446855685做

這:

1446855686睡覺......

1446855691做

一個實例塊,直到其他負載。這發生在Firefox和Chromium上。

如果我做第二個相同的劇本,「test2.php」,或重寫兩個url以相同的腳本,並加載在不同標籤的兩頁,我得到這個:

1446855862睡覺.. 。

1446855867做

這:

1446855863睡覺...

1446855868個做

兩個實例都加載在同一時間。所以這是相同的URL被阻止。

如何獲得具有相同URL的腳本的兩個實例同時加載/運行?

+0

由於我沒有在您的skript中看到任何實際的同步,您是否檢查過它不是瀏覽器優化(您是否嘗試過在firefox中加載一個實例而在Chrome中加載其他實例?)。如果是瀏覽器優化,請嘗試向頁面加載添加一個隨機參數('?random = 123')(帶有*不同的*值)並查看會發生什麼。 – ted

+2

這不是關於PHP的行爲,而是瀏覽器的行爲。 firefox和Chrome/-ium都會按順序執行(可高速緩存)完全相同網址的請求。 – VolkerK

+0

@ted頁面將在Firefox和Chromium中同時加載。隨機參數也允許它同時加載。 –

回答

0

正如VolkerK指出的那樣,您的測試證實Firefox/Chrome按順序執行完全相同的 URL的請求。但是實際上這不是問題,因爲用戶通常不會加載同一頁面兩次,而對於向Ajax請求提供數據的腳本,由於附加了不同的參數,因此URL會有所不同。

如果你想繞過這個機制,你可以在url上附加一個隨機參數(必須在不同的瀏覽器標籤中有所不同),即url.to/your/script?urlID=4821de7e524cf762deab6ed731343466。隨機參數使瀏覽器看到兩個不同的URL,從而並行執行加載。