2016-08-02 76 views
2

在我的JavaScript應用程序(建立在ExtJS,如果它很重要),我有一個PHP腳本的ajax調用,它執行一些相對較長的任務。這個腳本該如何結束:PHP,ExtJS和永不結束AJAX請求

$guid = getGUID(); 
file_put_contents('tmp/' . $guid . '.json', json_encode($olap_data)); 
$res = new stdClass; 
$res->success = true; 
$res->guid = $guid; 
echo json_encode($res); 

當我做這個AJAX調用,我看到,在約30秒(不長)出現了一個JSON文件夾tmp。但是,腳本仍然不會改變其狀態。我看到這幅畫的幾十分鐘在控制檯:

enter image description here

重要的行標記爲藍色。正如你所看到的,它的地位永遠不會改變。我認爲,這是因爲ExtJS和我應用這些覆蓋來增加超時:

Ext.define("Ext.override.data.Connection",{override:"Ext.data.Connection", timeout:30000000}); 
Ext.define("Ext.override.Ajax",{override:"Ext.Ajax", timeout:30000000}); 
Ext.define("Ext.override.data.proxy.Ajax",{override:"Ext.data.proxy.Ajax", timeout:30000000}); 
Ext.define("Ext.override.form.action.Action",{override:"Ext.form.action.Action", timeout:30000}); 

但它沒有幫助。那麼這有什麼問題?

回答

0

我發現那有什麼問題。事實上,整個問題是與ExtJS。由於版本ExtJS 5,現在我們必須添加以下這行代碼來增加超時:

Ext.Ajax.setTimeout(big_number_for_long_requests);