在我的JavaScript应用程序(内置ExtJS,如果它很重要)中,我对一些PHP脚本进行了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秒内(不是很长),tmp
文件夹中出现了一个json文件。但是,脚本仍然永远不会更改其状态。我在控制台看了几十分钟这张照片:
重要的行标记为蓝色。正如您所看到的,它的状态永远不会改变。我想,这是因为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 :(得分:0)
我发现了什么问题。事实上整个问题都是ExtJS
。从版本ExtJS 5
开始,现在我们必须添加这行代码以增加超时时间:
Ext.Ajax.setTimeout(big_number_for_long_requests);