我需要调用SAS存储过程,大约需要5分钟才能运行而不会挂断浏览器。我使用Yii堆栈并通过URL调用SAS。我附加了代码,但说实话,我已经尝试了很多这样的事情,以至于我的代码版本不再具有任何意义。任何方向都将不胜感激。
注意:我已经尝试过exec(),但似乎没有用。我尝试过ajax,并且更喜欢异步ajax调用,但此时我会尝试任何操作。任何其他需要的信息,请告诉我。
更新:我在php中创建了一个控制器动作,如果我直接转到浏览器网址中的控制器动作,则会成功完成存储过程。但是,如果我使用ajax get调用该控制器操作,则存储的进程不会执行。
答案 0 :(得分:1)
ajax应该可以正常工作!如果在没有参数的情况下调用存储过程,您甚至可以尝试使用h54s(html5 for SAS)javascript library。我写了一篇关于这个here的指南。示例代码 - 一旦配置 - 如下:
var adapter = new h54s(); // only need one instance
var myParams = {}; // create empty object if no parameters
var jsTablesObject = new h54s.Tables([myParams],'SASControlTable'); //make H54s dataset
adapter.call('/Webapp/example',jsTablesObject,function(err,res) {// call STP here
//we just submitted an STP request, now deal with response
alert(res);
// all code here will execute AFTER the stored proc is finished
});
// all code here will execute immediately
答案 1 :(得分:1)
如果您从php成功调用SAS存储过程,那么您只需要从javascript中异步调用您的php服务。
$.ajax({
type: "POST",
url: url + '&_action=background',
data: data, // additional parameters
async:true,
success: function(response){
alert(response);
// all code here will execute AFTER the PHP/STP is finished
}
});
// all code here will execute immediately
归功于@ addSphere
编辑:在@ quentin的建议
之后将_action = background添加到网址