2014-01-21 26 views
0

我有一個難以描述的問題。 我正在編寫一個腳本來更新我建立的在線程序。爲了更新,我下載了一個tar.gz文件,解壓縮它,然後用更新中的文件替換所有舊文件。 爲了讓用戶更新有關更新進度的信息,我有一個進度條,它使用jQuery ajax進行更新。 這是進步一步一個腳印,每一步後,進度條進行更新:替換已加載的文件

  1. 一個AJAX調用,以下載更新包

  2. 一個AJAX調用,以提取包

  3. 一個AJAX調用時用新的替換所有舊文件

  4. 更新安裝

我的問題是,當更新過程到達第3步時,我得到一個javascript錯誤Failed to load resource: The request timed out.。 我認爲這是因爲我替換了所有的javascript和php文件。 如何使這個Ajax調用工作,或更新正在安裝更新時更新進度欄的一些其他不錯的方法?

+0

考慮一個[*長輪詢*](http://stackoverflow.com/questions/333664/simple-long-polling-example-code)作爲可能的方式之一。 – BlitZ

回答

0

你可以多挖一點你如何做到這一點?

  • 是否可以暫時將更新的所有腳本(js和php)文件加載到臨時文件夾中並從那裏加載它們?只要更新了「核心」文件,就可以刪除臨時文件夾中的文件。
  • 您是否檢查第3步本身是否成功?文件被替換,但狀態不更新?還是更換本身也失敗了?

更新:

關於超時...... 爲什麼說你更換工作?

您是否有發送多個呼叫的功能?或者你打了一個巨大的電話?

另外,你是否嘗試調用php manualy,使實際更新在後臺工作?如果是這樣,它是否也有超時?

如果您不能使用臨時目錄,那麼您嘗試替換的所有文件因使用而被「阻止」也可能是可能的。但這只是一個猜測。

如果尚未完成,請嘗試重寫實際更新和替換的函數。 讓無論是JS或PHP:

  1. 檢查很多文件需要怎樣的更新
  2. 設置一個計數器到該號碼,並與文件爲每個計數器更新數組
  3. 一個文件
  4. 也許嘗試做一些比較之前/之後
+0

我無法將所有文件放在某個臨時目錄中,然後從那裏開始工作。 我檢查了第3步,我將所有被替換的文件放在一個txt文件中,並將其與需要替換的文件進行比較。 – SheperdOfFire

+0

我編輯了我的答案,請檢查 –