2014-01-14 145 views
0

我有一個應用程序,首先使ajax調用一個沉重和長期的操作(使用大量的數據庫),並且它也使其他ajax調用輕而快的操作,只檢查大手術的進展。Ajax調用行爲異步

問題是,短操作的ajax調用沒有得到響應,而大操作也沒有得到它的響應。這很奇怪,因爲它們可以同時運行。

當我手動檢查(在phpmyadmin上)大操作的進度時,(MySQL)數據庫響應正常。所以問題可能不是表鎖問題,但我不確定。

有沒有人有想法幫助我?

+2

使用同一會話的兩個頁面不能同時請求,因爲PHP將請求排隊以避免併發寫入。 – adeneo

+1

@adeneo其實你可以但你必須告訴PHP:在開始重載操作之前調用'session_write_close()'。很明顯,你不能再寫下去。 – hanzi

+0

@hanzi - 然後會話關閉,如果不是同一會話,您可以根據需要請求儘可能多的頁面,Web服務器如何能夠同時爲多個用戶提供同一頁面。 – adeneo

回答

0

在開始重載操作之前調用session_write_close()。很明顯,你不能再寫下去。由於PHP隊列請求以避免併發寫入,因此不能同時請求使用同一會話的兩個頁面。

調用session_write_close()將導致服務器能夠在響應前一個請求(如果有)之前響應客戶端請求。