Мне нужно вызвать хранимый процесс SAS, для запуска которого требуется около 5 минут, не отключая мой браузер. Я использую стек Yii и вызываю SAS через URL. Я бы прикрепил код, но, честно говоря, я уже столько раз пробовал, что не существует версии моего кода, которая больше не имеет смысла. Любое направление будет с благодарностью.
Примечание: я пробовал exec (), но это не работает. Я пробовал ajax, и предпочел бы асинхронный вызов ajax, но на этом этапе я попробую все что угодно. Любая другая информация, которая нужна, просто дайте мне знать.
ОБНОВЛЕНИЕ: Я создал действие контроллера в php, которое успешно завершает хранимый процесс, если я перейду непосредственно к действию контроллера в URL браузера. Однако, если я вызываю это действие контроллера с помощью ajax get, сохраненный процесс не выполняется.
Аякс должен работать нормально! Если ваш сохраненный процесс вызывается без параметров, вы можете даже попробовать использовать h54s (html5 для SAS) библиотека JavaScript. Я написал руководство по этому Вот. Пример кода — после настройки — выглядит следующим образом:
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
Если вы успешно вызываете хранимую процедуру SAS из php, вам просто нужно асинхронно вызывать службу php из javascript.
$.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
кредит @ангел
Изменить: добавив _action = background к URL после предложения @ quentin